javascript意外导致回调

时间:2015-06-06 17:02:10

标签: javascript node.js

以下代码是node.js的Javascript。当我运行它时,控制台打印未定义,我不知道为什么。我希望它打印'toto'。 你能不能让我知道为什么我没有得到我预期的结果但未定义,我怎样才能得到预期的结果?

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);

1 个答案:

答案 0 :(得分:2)

因为当你传递这样的函数时,它会丢失它的this上下文。您需要将函数绑定到其父对象。

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

您编写的方式thisshowContent内将引用模块范围而不是myObj

这是demo