如何从第二个对象更改第一个对象的值?

iLoveJS

我可以得到为什么不能从另一个对象分配值的解释吗?以及如何从第二个对象更改第一个对象的值?

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 ???
awarrier99

当您这样做时test.obj2.changeValue()由于绑定的工作方式,所以thischangeValue引用中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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我想用Angular2中的第一个调用第二个可观察对象

ComboBox的第二个Binding属性指向其第一个属性绑定对象

根据第二个值返回数组的第一个值

如何使第二个下拉列表基于第一个下拉值自动选择值

如果我不更改第一个下拉列表,则第二个下拉列表的值不变

遍历2个包含对象的数组,并使用第一个arrays键返回第二个数组的值

如何通过在JavaScript中匹配一些值来使用第二个对象更新第一个对象

根据对象从第一个参数推断第二个参数

在具有对象(第二个参数)的数组(第一个参数)上使用for循环迭代

Javascript:如果对象具有匹配的键,如何用第二个对象中的值替换第一个对象的值

根据第一个活动更改第二个活动的标题

在更改第一个微调器值时更改第二个微调器值

CSS专注于第一个孩子更改第二个孩子的颜色?

在第二个查询的值中使用第一个查询的值

如何获得第一个和第二个对象

根据第二个值找到内部数组的第一个值

如何获得第一个变量的排名是第一个对象中的对象,并且在android中第二个对象中有数组

通过第一个对象在 C++ 中创建第二个对象时,第一个对象去哪里了?

PHP - 如何获取数组的第 n 个(第一个、第二个等)键和值?

如何检查第一个 $_GET 的值并打印或检查第二个并打印值是否不同?

两个 JS 对象,从第一个对象中获取它在第二个对象中缺少的值

根据第一个设置第二个游戏对象的位置和旋转

单击第一个元素,更改第二个元素的样式

根据第一个的值在第二个可观察对象上调用订阅

查找第一个值并返回列表中的第二个值

Windbg 管理对象 poi 数组的第一个元素,第二个元素

如果我更改第一个下拉值,如何重置第二个下拉列表?

从字符串 id 数组创建对象数组,第一个对象的第一个值是第二个,第二个是第三个,依此类推

数组中第一个对象的属性被推送但不是第二个对象