我正在寻求实现这样的目标:
var settings = (function () {
this.data = {
array1: [],
array2: [],
array3: []
};
this.hasSettings = function () {
//todo
};
})();
我想做的是:
settings.data.array1.push(item);
不幸的是我得到了:
未捕获的TypeError:无法设置未定义的属性'datas'
有人可以帮助我解释实现这个问题的正确方法吗?
此致
答案 0 :(得分:1)
白色console.log(this)
... this
是window
个对象。要使代码工作,请将IIFE更改为立即创建实例:
var settings = new function () {
this.data = {
array1: [],
array2: [],
array3: []
};
this.hasSettings = function () {
//todo
};
};
当您编写new function(){...}
时,立即使用new
关键字调用构造函数。 new
关键字创建一个属性为this
的新对象并返回它(除非构造函数返回非原始值)。
使用IIFE后,您只需填充window
属性的全局对象(浏览器中为this
)。