当前位置: 首页 > 知识库问答 >
问题:

如何在ES6中复制对象方法

劳彦
2023-03-14

我想使用“扩展”操作符克隆对象。但是,这些方法不会复制,如图所示

我知道你可以做Object赋值(),但我正在寻找一种使用ES6语法的方法

ES6中使用扩展语法的深度复制解决方案涉及深度克隆:我只对复制方法和属性感兴趣

如何克隆javascript ES6类实例的解决方案使用Object.Assign()

class Test {
  toString() {
    return "This is a test object";
  }
}

let test = new Test();
let test2 = { ...test };

console.log(String(test));
console.log(String(test2));
// Output: This is a test object
// Output: [object Object]

共有2个答案

梁渊
2023-03-14

我想你可以这样做:

class Test {
  toString() {
    return "This is a test object";
  }
}

let test = new Test();
let test2 = {};

test2.__proto__ = test.__proto__;

console.log(String(test));
console.log(String(test2));

但我不知道,也许这是一个坏习惯:/。。

常智勇
2023-03-14

这:

class Test {
  toString() {
    return "This is a test object";
  }
} 

严格来说没有定义任何对象方法。它定义了类方法。

您需要将方法直接附加到对象作为“自己的属性”,以便传播复制它们:

class Test {
  constructor() {
    // define toString as a method attached directly to
    // the object
    this.toString = function() {
      return "This is a test object";
    }
  }
}

let test = new Test();
let test2 = { ...test };

console.log(String(test));
console.log(String(test2));
 类似资料:
  • 问题内容: 如何在Java中复制对象? 问题答案: 创建一个副本构造函数: 每个对象还有一个克隆方法,可用于复制对象,但不要使用它。创建类和执行不正确的克隆方法太容易了。

  • 通过拖动来复制对象 选择一个或多个对象。 选择“选择”、“直接选择”或“编组选择”工具。 按住 Alt 键 (Windows) 或 Option 键 (Mac OS) 并拖动所选对象(而非定界框上的手柄)。 使用图层面板复制对象 使用“图层”面板可快速复制对象、组和整个图层。 在“图层”面板中选择要复制的项目。 执行下列操作之一: 从“图层”面板菜单中选择“复制‘图层名称’”。 在“图层”面板中将

  • 本文向大家介绍如何在JavaScript中浅复制对象?,包括了如何在JavaScript中浅复制对象?的使用技巧和注意事项,需要的朋友参考一下 Underscore.js,JavaScript的一个库,推出了一种称为 _.extend() ,以浅拷贝中的JavaScript对象。此方法将源 对象中的所有属性复制到目标 对象,然后返回目标对象。在此引用 用于复制,但不用于复制。  语法 它接受对象并

  • 问题内容: 我想在BaseClass构造函数中复制SubClass对象。我需要以下代码正确执行。 可能吗?如果可以,我该怎么办?其他如何获得类似的效果? 问题答案: 这是不可能的。类A的构造函数为您提供了A的实例,无法绕开它。为什么不显式实例化子类? 另一种可能性可能涉及静态工厂方法,例如:

  • 我了解到,当您在Java中修改变量时,它不会改变它所基于的变量 我对对象也假设了类似的情况。考虑一下这个类。 在我试过这个代码后,我搞糊涂了。

  • 在node的上下文中,我无法理解ES6模块。js。 假设我有一个简单的节点应用程序。它基于iisnode示例,但我在顶部添加了一个。 你好js: 这将导致在模块之外使用导入语句 但是如果我改名为hello。你好。mjs我收到以下错误: 对我来说似乎是个陷阱,有什么出路? (iisnode版本为0.2.26,节点版本为v13.8.0)