2016-06-01 65 views
-1

我需要相同的結果,像下面,但插入項目「鑰匙」到對象B與JavaScript不手動插入變量名作爲對象的JavaScript值

//example-----------------------: 
var A = 0; 
var B = {key:A}; 

console.log(B.key); // return 0 
A = 1; 
console.log(B.key); // return 1 
//--------------------------------------------- 

//I need same result like above but inserting the item into object B with javascript not manually 
var A = 0; 
var B = {}; 

B['key'] = A; //Not work because this insert the value of A i need to insert character A as variable not string not 0 

謝謝

編輯: 好...對錯誤感到抱歉。在MI例子都返回0。我已經解決了MI問題,這是真的:B [「關鍵」] =函數(){返回A}感謝對您的aclarations

+2

兩個在Chrome和Firefox至少你的第一個例子返回0。 –

+1

它在任何瀏覽器中都會返回0,因爲變量是按值使用的,而不是通過引用。 – Gusman

+0

你不能在JavaScript中做到這一點。 – Pointy

回答

2

這是一般不可能在JavaScript中,有沒有這樣的事情,引用或指針。

既然你在這裏使用屬性,你可以用getters and setters雖然效仿:

var A = 0; 
var B = {get key() { return A; }, set key(v) { A = v; }}; 

console.log(B.key); // 0 
A = 1; 
console.log(B.key); // 1 
+1

我很習慣避免這些,因爲它們在 = IE9)http://kangax.github.io/compat-table/es5/#test-對象/ array_literal_extensions_Getter_accessors –

0

因爲一切都是由價值JS傳遞(如備註通過Gusman並在評論FelixKling),還有什麼工作是這樣的

var A = { key: 0 }; 
var B = A; 

console.log(B.key); // 0 
A.key = 1; // notice the difference here 
console.log(B.key); // 1 

,而不是試圖保持引用到另一個對象中的變量,這是不可能的,因爲變量是按值傳遞,保持裏面的值一個物體並傳遞物體。

由於問題是關於動態地構造B,你可以這樣做:

var A = { value: 0 }; 
var B = {}; 

// your logic somewhere 
function applyToB (newKey) { 
    B[newKey] = A; 
} 
applyToB('key'); 

// the expected result 
console.log(B.key.value); // 0 
A.value = 1; 
console.log(B.key.value); // 1 
+1

如果你打算downvote請提供一個評論 –

相關問題