javascript - 使用类和构造函数将 JavaScript 对象基于另一个对象

标签 javascript prototype ecmascript-6

ES6 引入了classextendsconstructor 等,使得基于原型(prototype)的继承变得非常简单。我想基于一个对象,通过类的构造函数在另一个对象上构造。在这种构造对象的新句法方式中,最简洁的方法是什么?

class A {
  constructor(json) {
     let base = JSON.parse(json);
     this.prototype = base; // ????
  }
}

我会使用extends,但由于对象是向下传递的,所以这里没有其他类定义

最佳答案

如果 json 每个实例都是唯一的,您应该更改 this 而不是 this.prototype。你可以使用 Object.assign为此:

class A {
  constructor(json) {
     let base = JSON.parse(json);
     Object.assign(this, base);
  }
}

Object.assign 将参数 1-n 中的 enumerableown 属性复制(通过引用)到参数 0 上。它是 native 实现的 _.assign (又名 _.extend)。

相反,如果您想对所有 实例使用单个json,则无需将其传递给构造函数。请参阅@Quentin Roy 的回答。

关于javascript - 使用类和构造函数将 JavaScript 对象基于另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33098300/

相关文章:

javascript - 如何找到包含这些ID的数组元素?

javascript - 这么深奥的JS代码怎么解释

javascript - 实现 HTML5 本地存储

Javascript 传递表单变量

javascript - 非常简单的 Javascript 继承

javascript - 使用 Javascript 构造函数进行原型(prototype)设计

javascript - 触发两个事件时运行代码

javascript - Javascript 原型(prototype)中哪些属性存储在哪个对象中?

javascript - ES6 计算属性和嵌套模板文字

JavaScript Promise Chaining - 模板文字的问题