作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻求实现这样的东西:
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/
我是一名优秀的程序员,十分优秀!