2016-08-19 8 views
-1

オブジェクト内の変数にアクセスする際に問題があります。この内部オブジェクトを参照する

変数にアクセスしようとすると、定義されていません。

私のコードは次のようになります。

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'だけ** **の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(); 
関連する問題