我有两个共享foo
属性的对象。
let obj = {
// ...
foo: "ba",
// ...
};
let obj2 = {
// ...
foo: obj.foo,
// ...
}
有没有一种方法可以通过更新obj.foo
或obj2.foo
来使另一个具有与更新后的值相同的值?例如
obj.foo += "r"
console.log(obj2.foo); // "bar"
答案 0 :(得分:2)
您可以将字符串存储在其自己的对象中,例如一个元素数组。
let obj = {
// ...
foo: ["ba"],
// ...
};
let obj2 = {
// ...
foo: obj.foo,
// ...
}
obj.foo[0] += "r"
console.log(obj2.foo[0]); // "bar"
答案 1 :(得分:1)
您可以将getter和setter与位于同一范围内的局部变量一起使用。
objectWillChange
或者您可以将getter和setter保留在第二个对象中,并在setter中更新第一个对象的属性。
let foo = 'ba'
let obj = {
// ...
get foo() {
return foo;
},
set foo(v) {
foo = v;
},
// ...
};
let obj2 = {
// ...
get foo() {
return foo;
},
set foo(v) {
foo = v;
},
// ...
}
console.log(obj.foo, obj2.foo)
obj.foo += 'a'
console.log(obj.foo, obj2.foo)
obj2.foo = 'foobar'
console.log(obj.foo, obj2.foo)