javascript - 为什么我的 JavaScript 对象中的属性未定义?

标签 javascript object

我创建了一个函数来生成并返回一个对象:

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

enter image description here

想想我做错了什么?

最佳答案

您只是在没有上下文的情况下调用该函数(即 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/

相关文章:

javascript - 无法获取未定义的属性 "userResponse"

javascript - 从 Extjs MVC 应用程序中获取全局变量

javascript - AngularJS 中用于管理受限页面的拦截器

javascript - PDF 中的 anchor 标记在 firefox 和 safari 中不可点击

javascript - Chartjs 向下钻取多个 Y 轴条形图/折线图的问题

java - POJO 是反面向对象(OO)的吗?

javascript - 如何在 Firebase 中获取 Unix 时间戳?

javascript - 对对象数组中的两个值求和,然后插入到另一个对象数组中

javascript - 是否可以从对象函数内部在 Canvas 上绘制?

java - Java ObjectInputStream提供了java.io.EOFException