我可以得到为什么不能从另一个对象分配值的解释吗?以及如何从第二个对象更改第一个对象的值?
class Test {
obj1 = {
obj1Value: [1, 2, 3],
};
obj2 = {
changeValue() {
this.obj1.obj1Value = [2, 2, 2];
},
};
}
let test = new Test();
console.log(test.obj1.value); // [1, 2, 3]
test.obj2.changeValue();
console.log(test.obj1.value); // TypeError: Cannot set property 'obj1Value' of undefined ???
当您这样做时test.obj2.changeValue()
,由于绑定的工作方式,所以this
在changeValue
引用中obj2
而不是在Test
类内部this
使用,请尝试使用箭头函数代替,以便this
继承来引用Test
:
class Test {
obj1 = {
obj1Value: [1, 2, 3],
};
obj2 = {
changeValue: () => {
this.obj1.obj1Value = [2, 2, 2];
},
};
}
let test = new Test();
console.log(test.obj1.obj1Value);
test.obj2.changeValue();
console.log(test.obj1.obj1Value);
如果没有对this
绑定进行详细介绍(可在此处找到更多详细信息),则当函数是对象的属性时,您可以通过对象调用它,即obj.func()
,this
将引用通过它调用的对象,即obj
。如果您改为f = obj.func; f()
,则this
行为会有所不同。这与如何调用函数有关。使用箭头函数(也称为匿名函数)代替this
从其父上下文继承关键字,这就是为什么您test.obj2.changeValue()
无需this
引用即可obj2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句