在本教程中,您将了解 JavaScript 静态方法以及如何有效地使用 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
类而不是 Person
类的实例:
var anonymous = Person.createAnonymous();
JavaScript ES6 的静态方法
在 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()
在类构造函数或实例方法调用静态方法。