摘要:在本教程中,您将了解 JavaScript 静态方法以及如何有效地使用它们。
JavaScript 静态方法简介
根据定义,静态方法绑定到 类,而不是该类的实例。因此,静态方法对于定义辅助方法或实用程序方法非常有用。
在 ES6 之前,您可以将静态方法直接添加到类的构造函数中。例如,假设您有以下 Person
类型
function Person(name) {
this.name = name;
}
Person.prototype.getName = function () {
return this.name;
};
Code language: JavaScript (javascript)
以下代码将名为 createAnonymous()
的静态方法添加到 Person
类型
Person.createAnonymous = function (gender) {
let name = gender == "male" ? "John Doe" : "Jane Doe";
return new Person(name);
};
Code language: JavaScript (javascript)
createAnonymous()
方法被认为是静态方法,因为它不依赖于 Person
类型的任何实例来获取其属性值。
要调用 createAnonymous()
方法,您需要使用 Person
类型,而不是它的实例
var anonymous = Person.createAnonymous();
Code language: JavaScript (javascript)
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);
}
}
Code language: JavaScript (javascript)
要调用静态方法,您可以使用以下语法
let anonymous = Person.createAnonymous("male");
Code language: JavaScript (javascript)
如果您尝试从类的实例中调用静态方法,您将收到错误。例如
let person = new Person('James Doe');
let anonymous = person.createAnonymous("male");
Code language: JavaScript (javascript)
错误
TypeError: person.createAnonymous is not a function
Code language: JavaScript (javascript)
从类构造函数或实例方法中调用静态方法
要从类构造函数或实例方法中调用静态方法,您可以使用类名,后面跟着 .
和静态方法
className.staticMethodName();
Code language: CSS (css)
或者,您可以使用以下语法
this.constructor.staticMethodName();
Code language: CSS (css)
摘要
- JavaScript 静态方法在类的实例之间共享。因此,它们绑定到类。
- 通过类名调用静态方法,而不是该类的实例。
- 使用
className.staticMethodName()
或this.constructor.staticMethodName()
在类构造函数或实例方法中调用静态方法。
本教程对您有帮助吗?