在ES6中创建具有原型属性的类时,如何在类的实例化(baz
)上设置这些道具biz
和new
?
class Foo {}
Foo.prototype.baz = 1;
Foo.prototype.biz = 'wow';
var thing = new Foo() // How to also set prototype values of .baz & .biz on creation?
class Baz {
constructor(biz) {
this.biz = biz
}
}
var baz = new Baz(); // will not put properties on the prototype.
答案 0 :(得分:2)
是
class Baz {
constructor(biz) {
Object.getPrototypeOf(this).biz = biz
// or
// this.constructor.prototype.biz = biz
}
}
const baz1 = new Baz(1); // baz1.biz === 1
const baz2 = new Baz(2); // baz2.biz === 2
baz1.biz === baz2.biz; // === 2
在任何合理的情况下,这都不是人们想做的事情。
答案 1 :(得分:1)
是的,您可以像这样设置原型属性,就像我们没有使用changed
('value', 1)
语法一样。
如何在创建时设置原型值?
你做不到。原型与实例化无关。如果您想要实例属性,请将它们放在构造函数中,但它们不再是原型属性。如果你想要继承的属性,把它们放在原型上,但它们在所有实例之间共享,而不是用每个对象创建。