Javascript 类的静态属性
在新的ES6类语法中,这是不可能的Javascript 类的静态属性,javascript,ecmascript-6,Javascript,Ecmascript 6,在新的ES6类语法中,这是不可能的 class Person { this.type = 'person'; 但如果我在构造函数中定义属性: 我知道在方法之外有属性的可能性,但到今天为止,以及与ES6规范相关的内容,这是不可能的 我的解决方案是否是为类定义静态属性的正确方法(出于语义原因,我在构造函数中定义了这些属性,但它似乎在其他方法中工作)?有更好的办法吗 我查看了中的规范,没有发现任何相关信息。如前所述,您正在创建一个实例属性。在构造函数中添加这样的属性是构造函数的作用所在。这在
class Person {
this.type = 'person';
但如果我在构造函数中定义属性:
我知道在方法之外有属性的可能性,但到今天为止,以及与ES6规范相关的内容,这是不可能的
我的解决方案是否是为类定义静态属性的正确方法(出于语义原因,我在构造函数中定义了这些属性,但它似乎在其他方法中工作)?有更好的办法吗
我查看了中的规范,没有发现任何相关信息。如前所述,您正在创建一个实例属性。在构造函数中添加这样的属性是构造函数的作用所在。这在ES6中没有改变。您可以创建静态getter:
“严格使用”;
班主任{
静态获取类型(){
返回“个人”
}
}
console.log(Person.type)/“Person”
取决于您希望如何访问它们。该实现为每个实例提供了一个名为type
的成员,但如果您希望静态更像C如何处理它们,那么您可以执行类似Person.type='Person'
的操作。然后它将只附加到类,而不是单个实例。@MikeC此类属性有很多用例,我没有具体的想法。如果我们扩展它的属性。我的问题更多地是这样的:这样做可以吗?还是有更正确的方法?那可以在课堂上做。然后我会说,是的,那很好。它们是“实例属性”或只是属性。
class Person {
constructor(name) { //class constructor
this.name = name;
this.type = 'person';
}