将变量名称作为对象值JavaScript插入

时间:2016-06-01 01:29:14

标签: javascript object

我需要像下面这样的结果,但是插入项目' 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}感谢你的咒语

2 个答案:

答案 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中的值传递的(如评论中的GusmanFelixKling所述),所以可行的是

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