如何通过引用变量更改对象 属性?
How do I change an object property via a reference variable?
我试图通过指向带有局部变量的某些属性来简化流程。当我更改数组值时,属性 也会更改(如预期的那样)。字符串和数字在它们相应的对象属性中似乎没有变化。是否可以通过引用变量更改属性?
var obj = {
prop: 0,
prop2: 'a',
prop3: [],
iterate: function() {
var ref = obj.prop,
ref2 = obj.prop2,
ref3 = obj.prop3,
i = 0;
ref++;
ref2 = 'b';
ref3[i] = 'b';
console.log(obj.prop, obj.prop2, obj.prop3);
//0, 'a', ['b']
obj.prop++;
obj.prop2 = 'b';
obj.prop3[i] = 'b';
console.log(obj.prop, obj.prop2, obj.prop3);
//1, 'b', ['b']
}
}
obj.iterate();
pointing to some properties with local variables
你不能。 JavaScript 没有指针。所有变量都有值。
When I change the array value, the property changes as well (as expected).
不是真的。你改变数组对象。 属性 没有改变,它仍然包含对数组的引用。
Why don't strings or numbers change in their corresponding object properties?
字符串和数字是原始值 - 您不能改变它们。您正在为变量重新分配一个新值。您没有重新分配 属性,因此不会更改它。
当您重新分配变量时,数组和其他对象也会发生同样的情况 - ref3 = [];
不会更改 属性。
Is it possible to change the properties via a reference variable?
没有。你可以使用 with
statement,但这是被鄙视的。最好明确说明对象属性。
我试图通过指向带有局部变量的某些属性来简化流程。当我更改数组值时,属性 也会更改(如预期的那样)。字符串和数字在它们相应的对象属性中似乎没有变化。是否可以通过引用变量更改属性?
var obj = {
prop: 0,
prop2: 'a',
prop3: [],
iterate: function() {
var ref = obj.prop,
ref2 = obj.prop2,
ref3 = obj.prop3,
i = 0;
ref++;
ref2 = 'b';
ref3[i] = 'b';
console.log(obj.prop, obj.prop2, obj.prop3);
//0, 'a', ['b']
obj.prop++;
obj.prop2 = 'b';
obj.prop3[i] = 'b';
console.log(obj.prop, obj.prop2, obj.prop3);
//1, 'b', ['b']
}
}
obj.iterate();
pointing to some properties with local variables
你不能。 JavaScript 没有指针。所有变量都有值。
When I change the array value, the property changes as well (as expected).
不是真的。你改变数组对象。 属性 没有改变,它仍然包含对数组的引用。
Why don't strings or numbers change in their corresponding object properties?
字符串和数字是原始值 - 您不能改变它们。您正在为变量重新分配一个新值。您没有重新分配 属性,因此不会更改它。
当您重新分配变量时,数组和其他对象也会发生同样的情况 - ref3 = [];
不会更改 属性。
Is it possible to change the properties via a reference variable?
没有。你可以使用 with
statement,但这是被鄙视的。最好明确说明对象属性。