如何在不使用JavaScript ES6中的构造函数的情况下使用对象文字来创建类的实例?

Rag*_*waj 6 javascript oop ecmascript-6

我正在尝试学习JavaScript ES6,这是一种非常酷的语言,我认为我应该练习一下,但我无法进行练习.那么我如何使用object literal复制一个类.

例如,该类是:

class Point {
  constructor(x, y) {
    this.x = x, this.y = y
  }
  add(other) {
    return new Point(this.x + other.x, this.y + other.y)
  }
}
Run Code Online (Sandbox Code Playgroud)

我想在这里使用object literal做一些事情来使输出成为真.

var fakePoint = YOUR_CODE_HERE
console.log(fakePoint instanceof Point)
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 5

我猜这个练习正在寻找一个__proto__用作对象文字键的解决方案- 如幻灯片中所述:

var fakePoint = {
    __proto__: Point.prototype,
    x: Math.random(),
    y: Math.random()
};
console.log(fakePoint instanceof Point)
Run Code Online (Sandbox Code Playgroud)

但是,__proto__不推荐使用(在对象文字和Object.prototypegetter/setter中),并且仅在Web浏览器中作为ES6标准化的遗留功能提供,因此我建议避免使用此类代码.适当的解决方案是使用Object.create:

var fakePoint = Object.assign(Object.create(Point.prototype), {
    x: Math.random(),
    y: Math.random()
});
console.log(fakePoint instanceof Point)
Run Code Online (Sandbox Code Playgroud)