2017-02-20 7 views

ответ

0

Вы должны связать это в вашу пресс-функцию, например:

function onPress(event){ 
    pop.open(this._Map); 
} 

this.Map = new Button({ 
    text: "Map", 
    press: onPress.bind(this) 
}) 

Или вы можете также использовать этот подход:

var _this = this; 
this.Map = new Button({ 
    text: "Map", 
    press: function(event){ 
     pop.open(_this._Map); 
    } 
}); 
0

при использовании new ключевого слова, интерпретатор создает новый пустой объект и вызывает конструктор (здесь Button) с этим новым объектом, привязанным к нему , поэтому ключевое слово «this» внутри конструктора это не то же самое, что и у this.map

и так как вы явно не звоните Button(), вы не можете связать это. вы можете сделать следующим образом:

var self = this; 
this.Map = new Button({ 
      text: "Map", 
      press: function(event){ 
       pop.open(self._Map); 
      } 
     }) 
0

Вы также можете использовать ES6 синтаксис:

press: (event) => { 
    pop.open(this._Map); 
} 

Читайте здесь о arrow functions

Смежные вопросы