我创建了一个函数来生成并返回一个对象:
function TickersObj(tag, array, boolLots, boolOptions, boolDisplay) {
tag = tag || {};
array = array || [];
boolLots = boolLots || false;
boolOptions = boolOptions || false;
boolDisplay = boolDisplay || true;
console.log('tag = ', tag);
console.log('array = ', array);
console.log('boolLots = ', boolLots);
console.log('boolOptions = ', boolOptions);
console.log('boolDisplay = ', boolDisplay);
this.assoTikArray = array;
this.lotsOfTags = boolLots;
this.tagOptions = boolOptions;
this.tagsHoverDisplay = boolDisplay;
return this;
}
稍后在我的代码中我会传入如下值:
switch(type) {
case 'tagsPanel':
tag.tickers = data.data.ticker_tag.tickers;
var tickersObj = TickersObj(tag, tag.tickers, tag.lotsOfTags, true, true);
return tickersObj;
break;
....
但是,一旦到达此行 this.assoTikArray = array;
我收到错误 Cannot set property assoTikArray of undefined
想想我做错了什么?
最佳答案
您只是在没有上下文的情况下调用该函数(即 TickersObj()
而不是 something.TickersObj()
),因此 the value of this
它里面要么是默认对象(浏览器中的window
),要么是undefined
(在严格模式下)。想必您处于严格模式。
要创建函数的新实例,您必须使用 the new
keyword 调用它.
var tickersObj = new TickersObj(tag, tag.tickers, tag.lotsOfTags, true, true);
关于javascript - 为什么我的 JavaScript 对象中的属性未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31840934/