我无法理解类构造函数中声明的属性、类原型中的属性和类中直接声明的属性之间的差异/原因/利弊。
Class Human {
constructor() {
this.a = 0;
}
}
Human.prototype.b = 1;
Human.c = 2;发布于 2019-07-26 10:37:12
还有一个相关的例子,尽管在JS中它只能定义函数:
Class Human {
d() {} // Property d, its type is Function.
}基本上,您的c与其他三个非常不同。您只能以Human.c的形式访问您的Human.c,而所有其他的都可以作为Human类实例的属性访问,例如new Human().a。
要定义方法,最好的语法可能类似于d,它看起来非常自然。实际上,就像您将函数分配给Human.prototype一样,就像b一样。所以上面的例子相当于Human.prototype.d = function() {}。
例如,变量(字段),a的语法可能是最好的。类的每个实例都接收自己的a。如果它被初始化为[]而不是0,那么它们中的每个都会有一个单独的数组,这很可能是您所期望的。
另一方面,分配给类原型(如您的b )的属性可以通过实例(因此new Human().b工作)可见,但它是类的所有现有实例都可以访问的单个对象--这意味着它们应该被视为不可变的,除非您喜欢糟糕的设计、全局可变状态等。因此,基本上可以在这里放置:
d),c),因此,我根本不会直接使用Class.prototype,而是将方法定义为方法,并在构造函数中定义字段。
https://stackoverflow.com/questions/57216387
复制相似问题