Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类的静态属性_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 类的静态属性

Javascript 类的静态属性,javascript,ecmascript-6,Javascript,Ecmascript 6,在新的ES6类语法中,这是不可能的 class Person { this.type = 'person'; 但如果我在构造函数中定义属性: 我知道在方法之外有属性的可能性,但到今天为止,以及与ES6规范相关的内容,这是不可能的 我的解决方案是否是为类定义静态属性的正确方法(出于语义原因,我在构造函数中定义了这些属性,但它似乎在其他方法中工作)?有更好的办法吗 我查看了中的规范,没有发现任何相关信息。如前所述,您正在创建一个实例属性。在构造函数中添加这样的属性是构造函数的作用所在。这在

在新的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';
    }