有没有办法在JavaScript中创建动态对象文字值?

mrg*_*oos 2 javascript object-literal javascript-objects

换句话说,让值为变量.像这样的东西:

var a=3,b=4;
var obj = {x : a, y : b};
alert(obj.x); //will display '3'
a=2;
alert(obj.x); //want it to display '2' - how can i accomplish this?
Run Code Online (Sandbox Code Playgroud)

Ian*_*Ian 5

使它成为一种方法:

var a = 3,
    b = 4,
    obj = {
        x: function () {
            return a;
        },
        y: b
    };
a = 2;
Run Code Online (Sandbox Code Playgroud)

称之为:

obj.x()  // returns 2
Run Code Online (Sandbox Code Playgroud)

演示: http ://jsfiddle.net/67NwY/2/

否则,没有原生(并且在旧版浏览器中支持)a通过使用获得"实时"值的方式obj.x.这里的另一个答案提供了使用Object.defineProperty它可以做到这一点.

obj.y如果你想这样做,也可以应用它.


ic3*_*3rg 5

这是一种方法:

var a=3,b=4;
var obj = {x : function(){return a;}, y : function(){return b;}};
alert(obj.x()); // displays '3'
a=2;
alert(obj.x()); // displays '2'
Run Code Online (Sandbox Code Playgroud)