我想在javascript中给出变量引用。
例如,我想这样做:
a=1
b=a
a=2
并且b = 2,并相应地改变为。
这可以在javascript中使用吗? 如果没有办法像a.onchange = function(){b = a}?
那样做我想做的是创建一个类似makeobject的函数,它创建一个对象并将它放在一个数组中,而不是像
那样返回它function makeobject() {
objects[objects.length] = {blah:'whatever',foo:8};
}
所以我能做到
a=makeobject()
b=makeobject()
c=makeobject()
以及稍后的代码
for (i in objects) {
objects[i].blah = 'whatev';
}
并且还会更改a,b和c的值
答案 0 :(得分:5)
您可以使用适用于大多数浏览器的新对象文字语法来解决此问题。
var o = {
_a : null,
get a() { return this._a; },
set a(v) { this._a = v; },
get b() { return this._a; },
set b(v) { this._a = v; }
};
o.a = 2;
o.b = 3;
o.a = 4;
alert(o.b); // alerts 4
另一种方法是创建自己的引用对象。
function Ref(obj, name, otherName) {
this.obj = obj;
this.name = name;
this.otherName = otherName;
}
Ref.prototype.assign = function (v) {
this.obj[this.name] = this.obj[this.otherName] = v;
}
var o = {
a : 1,
b : 4
};
var ref = new Ref(o, 'a', 'b');
ref.assign(3);
alert(o.b);
答案 1 :(得分:2)
有可能。但是你必须使用一个对象:
var a = new Object();
a.val = 6;
alert(a.val);
var b = a;
b.val = 5;
alert(a.val);
编辑:我正在玩另一种选择(即使已经标记了答案),这是另一种解决方案:
function makeobj()
{
if(typeof makeobj.baseobj === 'undefined')
{
makeobj.baseobj = { 'blah': 'whatever', 'foo': 8 };
}
return makeobj.baseobj;
}
var a = makeobj();
var b = makeobj();
var c = makeobj();
alert(a['blah']);
alert(b['blah']);
alert(c['blah']);
b['blah'] = 'i changed the value';
alert(a['blah']);
alert(b['blah']);
alert(c['blah']);
替代解决方案允许您创建 n 对象并随时更改值,并将更改传播到makeobj()
函数创建的其他变量。
答案 2 :(得分:0)
这是不可能的。
你想做什么?
我们可以找到更多Javascript-y方法来实现它。