我需要像下面这样的结果,但是插入项目' key'使用javascript手动进入对象B
//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
谢谢
EDITED: 好的......抱歉这个错误。在mi的例子中都是真的,都返回0.我用这个解决了mi问题:B [' key'] = function(){return A}感谢你的咒语
答案 0 :(得分: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 :(得分: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