【问题标题】:How to copy js object that contains function如何复制包含函数的js对象
【发布时间】:2022-01-06 22:48:26
【问题描述】:

我在复制本身具有功能的对象时遇到问题。请参阅下面的代码以及随后的问题解释。

const obj1 = {...object1};
const obj2 = {...object2};
const obj3 = {...object3};

const parentObj = {
 id: "123",
 name: "foo",
 nestedObj: [obj1, obj2, obj3],
somefunc(){
 return obj1.value + obj2.value + obj3.value
}
}

我复制这个对象的方式...

 const copyObj = {
...parentObj,
nestedObj: parentObj.nestedObj.map(obj=>{
 return{
  ...obj
}
})
}

上面的问题如下:

  1. 我有一个表单控件,允许我更改 obj1、obj2 或 obj3 值键。
  2. 函数需要这个分配给嵌套对象的“新”值。
  3. 但是,当被复制时,我的函数始终使用 nestedObj 的原始值。

有没有办法将函数绑定到新复制的 parentObj?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    如果somefunccopyObj.somefunc() 一样被调用,使得this 值对应于您调用该方法的对象,那么当您如下定义somefunc 时它将起作用:

      somefunc(){
        return this.nestedObj.reduce((sum, obj) => sum + obj.value, 0);
      }
    

    所以如果现在nestedObj 拥有您真正想要使用的对象,那么somefunc 将产生预期的总和,前提是在正确的容器对象上调用它。

    【讨论】:

    • 实际上是我没有使用“this”关键字导致问题。感谢您的支持,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多