2015-06-06 33 views
1

以下代碼是Javascript for 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)); 

你有它編寫的方式,thisshowContent將指模塊範圍,而不是myObj

這是demo