【发布时间】:2023-03-28 13:52:01
【问题描述】:
这如何转化为 ES6?
function Mock() { };
Mock.prototype.foo = 'bar';
var obj = new Mock();
console.log(obj.foo);
Mock.prototype.foo = 'Something else';
console.log(obj.foo);
我试过了:
class Mock {
foo = 'bar';
}
const obj = new Mock();
console.log(obj.foo);
Mock.prototype.foo = 'Something else';
console.log(obj.foo);
但它不起作用,因为类属性实际上是直接附加到实例化对象而不是附加到Mock.prototype。
【问题讨论】:
-
您可以从 proto
console.log(obj.__proto__.foo); //'Something else'访问父 foo -
@DenisStukalov 如果我只有
Mock的参考资料怎么办? -
@DenisStukalov,最好不要建议使用已弃用的属性
-
@ChristopherRonning 会有什么帮助?我想更新
prototype以便它也更新所有对象实例 -
@GuerricP 类字段是来自 stage-3 proposal 的实验性语法。如果有的话,它们可能会成为 ES2021 或更高版本的一部分。在 ES6 中,您应该只写一个
constructor()来创建属性,这也清楚地表明它们是在实例上创建的。
标签: javascript ecmascript-6 prototype