如何在ES6中改变Class的原型

时间:2016-06-07 13:27:42

标签: ecmascript-6

以下是我的班级,它的原型值没有改变,(我在Chrome控制台上工作)

class Rectangle {
    constructor(length, width) {
        this.length = length;
        this.width = width;
    }

    getArea() {
        return this.length * this.width;
    }

    static create(length, width) {
        return new Rectangle(length, width);
    }
}

我正在将Class的原型更改为null

Rectangle.prototype= null

当我尝试访问更改的Prototype时,值保持不变" Object"与' getArea' Rectangle的原型属性

但在ES5中,原型值发生了变化。

1 个答案:

答案 0 :(得分:3)

在ES6中,.prototype es的class属性不可写 1 。使用strict mode进行作业,您将获得ReferenceError例外“严格模式中的无效作业”。

如果你想覆盖.prototype(一般来说这是一个非常糟糕的主意),你必须使用Object.defineProperty(Rectangle, "prototype", {value: …})

1:见§14.5.14 ClassDefinitionEvaluation,步骤16:执行MakeConstructor(F,writablePrototype = false,prototype = proto)。