在构造函数上定义方法

Defining methods on constructor

本文关键字:方法 定义 构造函数      更新时间:2023-09-26

是否可以定义一个附加到构造函数而不是构造函数实例的方法?例如:

function Person() {
 //define a method 
}

然后该方法可以在构造函数本身上访问,例如:

Person.method() // calls the defined method

并且该方法在构造函数的任何实例上都不可用:

var person = new Person();
person.method(); // undefined

是的,您可以这样定义它:

function Person() {
    // constructor initialization code here
}
// define static method
Person.sayHi = function() {
    console.log("hi");
}
var bob = new Person();
Person.sayHi();    // works any time even before creating a Person object
bob.sayHi();       // undefined method

函数是一个可以有自己属性的对象(方法只是一个恰好是函数的属性)。因为这些属性不在原型上,所以它们不会提供给从Person构造函数创建的对象,而是可以从Person构造器函数对象本身获得。

这些基本上是其他语言所称的静态方法,因为它们与任何实例都不关联。