我有以下代码(简化)
var Page = new UI('page.html');
Page.onLoad = function(html){
this.name = 'Page 1';
Util.test(this.run);
};
Page.run = function(){
console.log(this.name); // undefined
console.log(Page.name); // correct
};
var Util = function(){};
Util.prototype.test = function(callback){
// when finished run the callback
callback();
};
我的问题是,如果执行离开对象然后返回,我为什么不能使用this
关键字?请解释我应该更改哪些内容才能再次访问this
。
答案 0 :(得分:0)
文章的顶部引用了关于'这个'的其他帖子,所以,我想我只是提供代码。如果您阅读了其他帖子和其中链接的文章,您应该能够遵循此代码。
function UI(html) {
this.name = html;
}
UI.prototype = {
onLoad: function () {
util.test(this);
},
run: function () {
console.log(this.name);
}
}
var util = (function () {
return {
test: function (ui) {
if (ui && ui.run) {
ui.run();
}
}
}
})();
var page = new UI("index.html");
答案 1 :(得分:0)
您可以将“this”绑定到函数运行,就像这样。
Page.onLoad = function(html){
this.name = 'Page 1';
Util.test(this.run.bind(this));
};
您可以找到有关“bind”功能的更多信息。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/bind