以下代码是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);
答案 0 :(得分:2)
因为当你传递这样的函数时,它会丢失它的this
上下文。您需要将函数绑定到其父对象。
myObj.init(myObj.showContent.bind(myObj));
您编写的方式this
在showContent
内将引用模块范围而不是myObj
。
这是demo。