作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下是我的类,它的原型(prototype)值没有改变,(我在 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);
}
}
我正在将类的原型(prototype)更改为 null
Rectangle.prototype= null
当我尝试访问更改后的原型(prototype)时,该值仍然是“Object”和 Rectangle 的“getArea”原型(prototype)属性
但在 ES5 中,原型(prototype)值发生了变化。
最佳答案
在ES6中,class
es的.prototype
属性是不可写的,不可配置的1。使用 strict mode在你进行赋值的地方,你会得到 ReferenceError
异常“严格模式下的无效赋值”。
如果你想覆盖 (这通常是一个非常糟糕的主意),.prototype
你将不得不使用 Object。 defineProperty(Rectangle, "prototype", {value: …})
。
1:参见§14.5.14 ClassDefinitionEvaluation ,第 16 步:执行 MakeConstructor(F, writablePrototype=false, prototype=proto)。
关于ecmascript-6 - 如何在 ES6 中更改类的原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37680766/
我是一名优秀的程序员,十分优秀!