在构造函数上定义方法

时间:2014-09-23 02:51:11

标签: javascript methods constructor

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

function Person() {
 //define a method 
}

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

Person.method() // calls the defined method

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

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

1 个答案:

答案 0 :(得分:2)

是的,您可以这样定义:

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构造函数对象本身获得。

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