2016-08-19 55 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();