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();总结
| 留言与评论(共有 0 条评论) “” |