2016-04-11 10 views
1

ここには、これに似たn個のオブジェクトからなる配列があります。javascriptの配列内で "this"キーワードを使用するには?

var views = [ 
    { 
    id: "chart-0", 
    datasource: "", 
    type: "batch", 
    context: "/analytics/device/stats/", 
    schema: [ 
     { 
     "metadata": { 
      "names": [""], 
      "types": [""] 
     } 
     } 
    ], 
    columns: [ 
     { 
     "name": "month", 
     "label": "month", 
     "type": "linear", 
     }, 
     { 
     "name": "minValue", 
     "label": "minValue", 
     "type": "linear" 
     }, 
     { 
     "name": "maxValue", 
     "label": "maxValue", 
     "type": "linear", 
     "axis": "y" 
     }, 
     { 
     "name": "time", 
     "label": "time", 
     "type": "time", 
     "axis": "x" 
     }, 
    ], 
    callbacks: [ 
     { 
     type: "click", 
     callback: function() {} 
     } 
    ], 
    data: function() { 
     var COLUMNS = views[0].columns; 
    } 
    } 
]; 

私はデータ関数内のフィールドの一部にアクセスしたいです。私はIDにアクセスすることができます。単にデータソースthis.idまたはthis.datasourceです。 このキーワードの代わりに、ビューを使用してデータ関数内にアクセスする方法[0]

+1

あり、それが存在する限られた範囲を参照することになりますのでビュー –

+0

えー、 'data'が関数であるには' columns'プロパティはありません。何を求めているのですか? – Andy

+0

'data'関数はどのように呼び出されますか? –

答えて

0

のみ、私はあなたがIDを割り当てるには、このキーワードを使用することができることを知っている方法、距離、またはその他の.columnsプロパティはデータを関数に渡すことです。

// create a function and pass in a reference to the views array and specify the objects index you want to operate on. 

function chanceProperty(views[0]) { 
    var currentColumns = this.columns; // gives you a reference to the objects columns array. "This" is a reference to the object that was passed in. 

// you can then do your operations on the properties in that array either with a loop or by specifically targeting an object. 

    currentColumns[1].name = "myNewMinValue"; 

// or 

    currentColumns.forEach(function(val, idx) { 
     currentColumns[idx].name = "allTheSame"; 
    }); 

} 

更新

私は薄い私はあなたがやろうとしているものを参照してください。いくつかのビュープロパティをデータ関数に渡したいとします。あなたはそれのために「これ」は必要ありません。必要なプロパティをデータ関数に渡すことができます。

data: function(id, dataSource, columns) { 
    var COLUMNS = views[0].columns; 
} 
0

あなたは使用することができます。

data: function() { 
    var COLUMNS = this.columns; 

    return COLUMNS; 
} 

そして、あなたはデータ関数内の列にアクセスすることができますが:

views[0].data(); 
0

thisニーズの世話を使用。よくviews[0].columnsにアクセスするには、this.columnsと言ってください。条件は2つあります。

  1. あなたはviews[0].data();のような関数を呼び出す必要がありますだけにしてdata機能でthisviewsオブジェクトを参照します。言い換えれば、をコールバックとして渡したい場合は、doStg(arg1, arg2, views[0].data)が好きなら、thisは、views[0]オブジェクトを参照するのではなく、グローバルスコープまたはウィンドウスコープを参照することになるので注意してください。したがって、doStg(arg1, arg2, function(){views[0].data})
  2. のようにコールバックを渡す必要がありますviews[0].dataを矢印関数として定義したい場合は、通常の方法の代わりに、thisを忘れてください。その後、thisのみ機能の独自のスコープ(いなくてもviews[0]オブジェクト)
関連する問題