以下是我的班级,它的原型值没有改变,(我在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中,原型值发生了变化。
答案 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)。