【ES6 教程】第四章 ES6类04—如何定义与类关联的方法
在今天的文章中,我们将一起来学习 JavaScript 静态方法以及如何有效地使用它们。
JavaScript 静态方法介绍
根据定义,静态方法绑定到一个类,而不是该类的实例。因此,静态方法对于定义帮助程序或实用程序方法很有用。
要在 ES6 之前定义静态方法,直接将其添加到类的构造函数中。例如,假设我们有一个 Person 类型,如下所示:
function Person(name) {
this.name = name;
}
Person.prototype.getName = function () {
return this.name;
};
下面将一个名为 createAnonymous() 的静态方法添加到 Person 类型:
Person.createAnonymous = function (gender) {
let name = gender == "male" ? "John Doe" : "Jane Doe";
return new Person(name);
};
createAnonymous() 方法被认为是静态方法,因为它的属性值不依赖于 Person 类型的任何实例。
要调用 createAnonymous() 方法,请使用 Person 类型而不是其实例:
var anonymous = Person.createAnonymous();
ES6 中的 JavaScript 静态方法
在 ES6 中,我们使用 static 关键字定义静态方法。以下示例为 Person 类定义了一个名为 createAnonymous() 的静态方法:
class Person {
constructor(name) {
this.name = name;
}
getName() {
return this.name;
}
static createAnonymous(gender) {
let name = gender == "male" ? "John Doe" : "Jane Doe";
return new Person(name);
}
}
要调用静态方法,请使用以下语法:
let anonymous = Person.createAnonymous("male");
如果你试图从类的实例调用静态方法,你会得到一个错误。例如:
let person = new Person('James Doe');
let anonymous = person.createAnonymous("male");
错误:
TypeError: person.createAnonymous is not a function
从类构造函数或实例方法调用静态方法
要从类构造函数或实例方法调用静态方法,请使用类名,后跟 . 和静态方法:
className.staticMethodName();
或者,可以使用以下语法:
this.constructor.staticMethodName();
总结
JavaScript 静态方法在类的实例之间共享。因此,它们与类绑定。
通过类名调用静态方法,而不是该类的实例。
使用 className.staticMethodName() 或 this.constructor.staticMethodName() 调用类构造函数或实例方法中的静态方法。
更多教程
【ES6 教程】第四章 ES6类03—学习另一种使用类表达式定义新类的方法
【ES6 教程】第四章 ES6类02—JavaScript Getter 和 Setter
【ES6 教程】第四章 ES6类01—语法以及如何声明一个类
【ES6 教程】第2章 解构01—如何将数组的元素分配给变量
【ES6 教程】第一章 新的ES6语法10—如何替换字符串中的变量
【ES6 教程】第一章 新的ES6语法09—八进制和二进制字面量
【ES6 教程】第一章 新的ES6语法08— for…of 循环
【ES6 教程】第一章 新的ES6语法07—ES6 提供了一种定义对象字面量的新方法
【ES6 教程】第一章 新的ES6语法06—JavaScript 扩展运算符
【ES6 教程】第一章 新的ES6语法05—REST 参数以及如何有效地使用它们
【ES6 教程】第一章 新的ES6语法04—如何设置函数参数的默认值
【ES6 教程】第一章 新的ES6语法03—使用const 关键字定义常量
【ES6 教程】第一章 新的ES6语法02—var 和 let 的区别
【ES6 教程】第一章 新的ES6语法01—let:使用let关键字声明块范围的变量
学习更多技能
请点击下方公众号