换句话说,让值是一个变量。像这样的东西:
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?
换句话说,让值是一个变量。像这样的东西:
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?
使其成为一种方法:
var a = 3,
b = 4,
obj = {
x: function () {
return a;
},
y: b
};
a = 2;
并称它为:
obj.x() // returns 2
演示:http: //jsfiddle.net/67NwY/2/
否则,没有本机(旧浏览器支持)方式来获取a
使用obj.x
. 此处的另一个答案提供了使用Object.defineProperty
that 可以做到这一点。
obj.y
如果您希望这样做,您也可以将其应用于。
这是一种方法:
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'
让它成为一个对象
var a = {
val:3
};
var obj = {x : a};
alert(obj.x.val); //will display '3'
a.val=2;
alert(obj.x.val); //will display '2'
属性 getter 和 setter
除了 Ian 所说的,在新版本的 JS 中,您可以使用属性 getter 和 setter。Ian 使用了定义它们的编程方式,还有一种文字语法(因为您的问题标题提到了“对象文字”)。请注意,通过添加一个 setter,我们允许从obj.x
and设置值a
;
var a = 3;
var o = {
get x() {
return a;
},
set x(value) {
a = value;
}
};
alert ( o.x ); // 3
a = 2;
alert( o.x ); // 2
o.x = 4;
alert(a); // 4
您可以使用属性描述符(从 ECMAScript 版本 5 开始)来执行此操作。
var a = 3;
var obj = {};
Object.defineProperty(obj, "x", { get : function(){ return a; } });
alert(obj.x); // 3
a = 2;
alert(obj.x); // 2