2015-02-09 68 views
0

我試圖解決的JavaScript對象的字段從一個函數中的另一場類似這樣的內引用一個字段:如何從一個對象

var binds = {}; 
var name = 'hi'; 
binds[name] = { 
    foo: [], 
    bar: { 
    add: function (e) { foo.push (e); } 
    } 
} 

我試圖this.foo.push (e)並結合與功能.bind (binds[name]).bind (this)但這些都沒有工作,我怎麼能參考foo元素從bar功能?

編輯:

我想引用一個字段是不是同一個對象,但上漲上。所以這與鏈接的問題不同。

+0

你'bind'的做法是正確的,只是它在重複提到的問題的困擾。 – Bergi 2015-02-09 22:58:30

+0

儘管問題類似,但它們並不相同。另一個問題是詢問如何基於他人初始化一個屬性。這個問題是問如何創建一個引用其他屬性的方法。非常不一樣。無論如何,我在下面回答。 – Eclecticist 2015-02-09 23:00:17

+0

那裏沒有JSON。這是一個JavaScript對象。 – Quentin 2015-02-10 00:06:01

回答

0

你可以玩弄一個模塊模式來存儲這樣的更高的提升性能​​的引用:

var binds = {}; 
var name = 'hi'; 

binds[name] = (function() { 
    var arr = []; 
    return { 
     foo: arr, 
     bar: { 
      add: function(e) { 
       arr.push(e); 
      } 
     } 
    } 
})(); 

binds[name].bar.add('test'); 
console.log(binds[name].foo); //logs ["test"] 
+0

我需要更深入的add函數,看看我的代碼,它是不同的。這只是最簡單的例子 – 2015-02-09 22:59:59

+0

啊,我沒有意識到。我現在將刪除我的答案,稍後再回來,當我有更多的時間:) – Eclecticist 2015-02-09 23:08:00

+0

我編輯它,以反映你的深度:) – Eclecticist 2015-02-09 23:13:56