在 Javascript6 中,静态属性是可以在类级别上定义并访问的属性。
举个例子,有一个动物叫“老虎”,它有一些属性例如“颜色”、“体型”等等。这些属性事实上是可以在每个实例中定义和设置的,比如说一只白色的小型老虎、一只黑色的大型老虎等等。但是这些属性是相同的,因此我们可以在类级别上定义它们,让所有实例都共享它们。
在 Javascript6 中,我们可以使用 static 关键字来定义静态属性。它们不会被任何实例所继承,而是直接在类上定义和访问。
下面是一个动物类的例子,它定义了一个静态属性“type”:
javascriptclass Animal {static type = 'mammal';<br> constructor(name) {this.name = name;}}<br>const tiger = new Animal('Tiger');<br>console.log(tiger.name); // "Tiger"console.log(tiger.type); // undefinedconsole.log(Animal.type); // "mammal"
在这个例子中,我们定义了一个 Animal 类。类中包括一个静态属性“type”和一个构造函数“constructor”。构造函数用于初始化一个实例,并将其命名为“name”。静态属性“type”则用于定义所有实例共享的类级别属性。在上面的代码中,我们创建了一个名为“Tiger”的动物实例,并访问了它的 name 属性和 type 属性。如上所述,实例访问不到静态属性,因此我们尝试访问 Animal 类的 type 属性。
静态属性和方法的优点在于,它们可以在类定义中提供一些公用的数据和功能,以极少的代码复制和内存占用代价服务于所有实例。
然而,我们应该意识到静态属性和方法并不是被应用程序开发人员广泛应用的概念。这是因为静态属性和方法缺少状态(state)。在许多实例变量和函数都需要被创建,以便以不同的方式运行时,静态属性和方法显得有点失灵。除非您需要的确保全局只有一个对此类特性的访问,否则您应该考虑其他模式来实现该类规模和相关性更强的属性设置。
本文提到的样例中,它已经展示了一个简单的示例使读者熟悉静态属性的概念,当你需要一些定义一次,获得反复使用的属性和函数时,可以将其定义为静态。