2016-08-19 53 views
-1

我在访问对象中的变量时遇到了一些问题。引用此内部对象

当我尝试访问的变量我就要返回undefined。

我的代码如下所示:

var app = { 
    data: function() { 
    this.labels = [1, 2, 3, 4, 5]; 
    }, 
    barChartData: { 
    labels: this.labels, // this is undefined 
    datasets: [{ 
     data: this.data1 // this is undefined 
    }, { 
     data: this.data2 // this is undefined 
    }] 
    }, 

    }, 
    init: function() { 
    this.data(); 
    } 
} 
app.init(); 
+0

'barChartData'是在调用'data()'之前定义的,只需在** init **函数末尾添加'this.barChartData.labels = this.labels'即可。 'data1'和'data2'没有定义,所以它们的值当然是未定义的 –

+0

[对象字面声明中的自引用]的可能重复(http://stackoverflow.com/questions/4616202/self-references-in-对象文字声明) – nils

回答

1

我发现你有一个

}, 

得多在你的代码。工作代码是:

var app = { 
    data: function(){ 
    this.barChartData.labels = [1, 2, 3, 4, 5]; 
    this.barChartData.data1 = [1, 2, 3, 4, 5]; 
    this.barChartData.data2 = [1, 2, 3, 4, 5]; 
    }, 
    barChartData:{ 
     labels: [], 
     datasets: [{ 
      data: [] 
     }, { 
      data: [] 
     }]  
    }, 

    init: function() { 
    this.data(); 
    } 
} 
app.init(); 
console.log(app.barChartData.labels); 

对不起,第一个不好主意。这个工作并初始化数组。

+0

这不会正确地分配标签。 –

+0

对不起,我现在修复了。 – McBoman

0

明白了。感谢oliv37指出订单是错误的。

var app = { 
    data: function() { 
    this.labels = [1, 2, 3, 4, 5]; 
    this.data1 = [1, 2, 3, 4, 5]; 
    this.data2 = [1, 2, 3, 4, 5]; 
    }, 
    barChartData: function() { 
    data = { 
     labels: this.labels, 
     datasets: [{ 
     data: this.data1 
     }, { 
     data: this.data2 
     }] 
    } 
    }, 
    init: function() { 
    this.data(); 
    this.barChartData(); 
    } 
} 
app.init();