如何将包含数组的对象添加到类中

时间:2015-02-02 13:09:38

标签: javascript arrays

我正在寻求实现这样的目标:

var settings = (function () {
    this.data = {
        array1: [],
        array2: [],
        array3: []
    };

    this.hasSettings = function () {
            //todo
    };
})();

我想做的是:

settings.data.array1.push(item);

不幸的是我得到了:

  

未捕获的TypeError:无法设置未定义的属性'datas'

有人可以帮助我解释实现这个问题的正确方法吗?

此致

1 个答案:

答案 0 :(得分:1)

您的IIFE中的

白色console.log(this) ... thiswindow个对象。要使代码工作,请将IIFE更改为立即创建实例:

var settings = new function () {
    this.data = {
        array1: [],
        array2: [],
        array3: []
    };

    this.hasSettings = function () {
            //todo
    };
};

当您编写new function(){...}时,立即使用new关键字调用构造函数。 new关键字创建一个属性为this的新对象并返回它(除非构造函数返回非原始值)。

使用IIFE后,您只需填充window属性的全局对象(浏览器中为this)。