2015-06-06 3 views
1

Следующий код является Javascript для node.js. Когда я запускаю его, консольные отпечатки не определены, я не знаю, почему. Я ожидал, что он напечатает «toto». Не могли бы вы сообщить мне, почему я не получу ожидаемый результат, но не определено и как я могу получить ожидаемый результат?javascript неожиданный результат в обратном вызове

var Obj = function() {}; 

Obj.prototype.content = undefined; 

Obj.prototype.showContent = function() { 
    console.log(this.content); 
} 

Obj.prototype.init = function(callback) { 
    this.content = 'toto'; 
    callback(); 
} 

var myObj = new Obj(); 
myObj.init(myObj.showContent); 

ответ

2

Потому что, когда вы передаете в функцию, как это, он теряет это this контекст. Вам нужно привязать функцию к ее родительскому объекту.

myObj.init(myObj.showContent.bind(myObj)); 

Путь у вас есть написано, this внутри showContent будет относиться к модулю объема вместо myObj.

Адрес demo.

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