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

标签 javascript arrays

我正在寻求实现这样的东西:

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

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

我想用它做的是:

settings.data.array1.push(item);

不幸的是我得到了:

Uncaught TypeError: Cannot set property 'datas' of undefined

有人可以帮助我并解释实现此目的的正确方法吗?

问候

最佳答案

IIFE 中的

white 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时,您只需使用 this 的属性填充全局对象(浏览器中的 window)。

关于javascript - 如何将包含数组的对象添加到类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278490/

相关文章:

javascript - 切换列表图像并展开所有带有无序列表的 jquery Accordion

javascript - 是否有类似于 RealBasic 或 LiveCode 的东西,但使用 Javascript/HTML 作为语言?

python - 在数组中查找特定值

php - 尝试读取数组上的属性 "title"(错误异常)Laravel Php

C++:创建一个局部对象数组

c++ - 使用指针在 C++ 中传递标量和数组数据

javascript - 无法在选择选项中显示查询结果

javascript - mixLatest 与 ngrx 不更新更改

javascript - 在 javascript 中,将标签转换为链接的最有效方法是什么?

arrays - 当唯一 ID 匹配时,将键值对添加到哈希数组