在对象文字中调用自执行函数时的异常

时间:2018-04-11 22:42:29

标签: javascript function object this self-executing-function

我试图将字段的值设置为函数,然后执行它。 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 :(

认为它可能是一个上下文问题,所以我尝试了bindcall的几件事,但没有运气。 我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

this仅在调用对象的方法时绑定到对象,即app.someMethod()。但是,您在创建对象时尝试调用fetchLocalStorage(),而不是在对象的方法中调用this,因此window就是外部上下文,这可能是全局的var app = { fetchLocalStorage: function() { //fetching return "fetching data..."; } }; app.busdata = app.fetchLocalStorage();对象。

在创建对象之前,您无法引用对象的其他属性。因此,在创建对象后,只需正常调用函数。



{{1}}




答案 1 :(得分:0)

我认为你的参数在支架的错误一侧。

busdata: (function(){return this.fetchLocalStorage()}() ),