在对象字面量中调用自执行函数时出现异常
Exception when calling a self-executing function in an object literal
我正在尝试将一个字段的值设置为一个函数,然后执行它。 this.fetchLocalStorage is not a function
是我从运行那里得到的。
var app = {
busdata: (function(){return this.fetchLocalStorage()})(),
fetchLocalStorage: function() {
//fetching
return "fetching data...";
}
};
console.log(app.busdata);
请注意,如果不让它成为一个自执行函数,它就可以工作,但这意味着当我只需要获取一次数据时每次都会调用该函数。
busdata: function(){return this.fetchLocalStorage()}
/* ... */
console.log(app.busdata()); //this calls the function every time :(
认为这可能是上下文问题,所以我用 bind
和 call
尝试了几件事,但没有成功。
我错过了什么吗?
我认为你的参数在支架的错误一侧。
busdata: (function(){return this.fetchLocalStorage()}() ),
this
仅在调用对象的方法时绑定到对象,即app.someMethod()
。但是你在创建对象时试图调用 fetchLocalStorage()
,而不是在对象的方法中,所以 this
是外部上下文的任何内容,这可能是全局 window
对象。
在创建对象之前,您不能引用对象的其他属性。所以创建对象后正常调用函数即可。
var app = {
fetchLocalStorage: function() {
//fetching
return "fetching data...";
}
};
app.busdata = app.fetchLocalStorage();
我正在尝试将一个字段的值设置为一个函数,然后执行它。 this.fetchLocalStorage is not a function
是我从运行那里得到的。
var app = {
busdata: (function(){return this.fetchLocalStorage()})(),
fetchLocalStorage: function() {
//fetching
return "fetching data...";
}
};
console.log(app.busdata);
请注意,如果不让它成为一个自执行函数,它就可以工作,但这意味着当我只需要获取一次数据时每次都会调用该函数。
busdata: function(){return this.fetchLocalStorage()}
/* ... */
console.log(app.busdata()); //this calls the function every time :(
认为这可能是上下文问题,所以我用 bind
和 call
尝试了几件事,但没有成功。
我错过了什么吗?
我认为你的参数在支架的错误一侧。
busdata: (function(){return this.fetchLocalStorage()}() ),
this
仅在调用对象的方法时绑定到对象,即app.someMethod()
。但是你在创建对象时试图调用 fetchLocalStorage()
,而不是在对象的方法中,所以 this
是外部上下文的任何内容,这可能是全局 window
对象。
在创建对象之前,您不能引用对象的其他属性。所以创建对象后正常调用函数即可。
var app = {
fetchLocalStorage: function() {
//fetching
return "fetching data...";
}
};
app.busdata = app.fetchLocalStorage();