我想通過引用對象a來設置值3
至a.b
。如何通過引用設置值對象
例如:
var a ={};
a.a =1;
a.b =2;
var x = a.b;
alert (a.b);// show 2
x =3;
alert (a.b); // I want to see in this line 3 instead 2.
非常感謝
我怎麼能這樣做?
我想通過引用對象a來設置值3
至a.b
。如何通過引用設置值對象
例如:
var a ={};
a.a =1;
a.b =2;
var x = a.b;
alert (a.b);// show 2
x =3;
alert (a.b); // I want to see in this line 3 instead 2.
非常感謝
我怎麼能這樣做?
你沒有JavaScript中的指針,所以你不能簡單地做到這一點。
你平時做的「取代」在JavaScript中三分球是利用回調:
var a ={};
a.a =1;
a.b =2;
var x = a.b;
alert (a.b);// show 2
var f = function(v){ a.b=v};
f(3);
alert (a.b); // alerts 3
這個回調可以被傳遞到其他功能,可能是什麼,從你想在這個語言是什麼最接近。
你不能那樣做。由於2
是原始的,因此您沒有提及它,而是x
實際上具有值3
。
你可以做的是提供一個功能,將修改父對象的屬性:
var a = {
a: 1,
b: 2,
setB: function(value) {
this.b = value;
}
}
a.setB(3);
console.log(a.b);
我認爲這是清潔工。
要回答你的編輯,是的,有點。這取決於你在做什麼。如果你有以下幾點:
var a = {
a: {value: 1},
b: {value: 2},
};
var x = a.b;
x = {value: 3};
然後a.b
仍然是{value: 2}
,因爲你所做的一切是由x
指向一個不同的對象。但是要知道x
指向a.b
,這是一個對象,所以如果你做x.value = 3;
,a.b
現在有{value: 3}
。
您只能通過引用傳遞對象。
var a = {};
a.a = 1;
a.b = 2;
var x = a;
alert (a.b); // 2
x.b = 3;
alert (a.b); // 3
一個例子
var a ={};
a.a =1;
a.b =2;
var x =function(v){ a.b=v};
alert (a.b);// show 2
x(3);
alert (a.b);
當你有,你想傳遞一個值的引用的情況下,你總是可以使用拳。事實是,您的商業案例將決定哪種方式最適合您。
What is boxing and unboxing and what are the trade offs?
這裏是一個小未經測試的僞代碼,但它應該爲你工作。
您有幾個選項,考慮整個對象作爲參考,或者僅對單個原始值進行裝箱。
var c={}
c.a = null
c.b = null
//set the value of "c"
c = a;
//change the value of the reference
a.b = 100;
//now the reference has been update
alert(c.b); // equals 100
或者如果你只是想整型盒裝
var boxed_value = {}
boxed_value.total = 100;
var obj_a = {};
obj_a.value_a = boxed_value;
//obj_a.value_a.total = 100;
var obj_b = {};
obj_b.value = boxed_value;
//obj_b.value_a.total = 100
//obj_a.value_a.total = 100
boxed_value.total = 200;
obj_a.value.total = 300;
obj_b.value.total = 400;
//now all values have changed as they are referenced
如果對象來代替原語將有可能?如果沒有,那部分似乎有點誤導/嚴重措辭。 – delnan