ES6 引入了class
、extends
、constructor
等,使得基于原型(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 中的 enumerable 和 own 属性复制(通过引用)到参数 0 上。它是 native 实现的 _.assign
(又名 _.extend
)。
相反,如果您想对所有 实例使用单个json
,则无需将其传递给构造函数。请参阅@Quentin Roy 的回答。
关于javascript - 使用类和构造函数将 JavaScript 对象基于另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33098300/