JavaScript 静态方法

摘要:在本教程中,您将了解 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 functionCode language: JavaScript (javascript)

从类构造函数或实例方法中调用静态方法

要从类构造函数或实例方法中调用静态方法,您可以使用类名,后面跟着 . 和静态方法

className.staticMethodName();Code language: CSS (css)

或者,您可以使用以下语法

this.constructor.staticMethodName();Code language: CSS (css)

摘要

  • JavaScript 静态方法在类的实例之间共享。因此,它们绑定到类。
  • 通过类名调用静态方法,而不是该类的实例。
  • 使用 className.staticMethodName()this.constructor.staticMethodName() 在类构造函数或实例方法中调用静态方法。
本教程对您有帮助吗?