修改功能实例的原型链有什么意义?

时间:2018-11-10 06:42:41

标签: ecmascript-6 ecmascript-5

2ality在ECMAScript 6中所述, 子类如下。

class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
    ···
}

class ColorPoint extends Point {
    constructor(x, y, color) {
        super(x, y);
        this.color = color;
    }
    ···
}

let cp = new ColorPoint(25, 8, 'green');

此代码产生以下对象。

enter image description here

而且我知道JavaScript中的类比基于原型的继承是语法糖。 普通的旧JavaScript中的典型实现就像

function Parent(name) {
    this.name = name || 'parent'
}

function Child(name, age) {
    Parent.call(this, (name || 'child'))
    this.age = age || 0
}

Child.prototype = Object.create(Parent.prototype)
Child.prototype.constructor = Child

var c = new Child

但是原型链看起来与之前的有所不同,大致如此

enter image description here

所以我的问题:

  1. ES5中是否有任何方法可以重新分配Function Instance的{​​{1}}属性,使继承与ES2015的属性完全相同(您知道[[Prototype]]是ES2015中引入的)
  2. 修改功能实例的(构造函数)原型链有什么意义?

0 个答案:

没有答案