javascript - 在构造函数上定义方法

标签 javascript methods constructor

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

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

函数是一个可以拥有自己属性的对象(方法只是恰好是函数的属性)。因为这些属性不在原型(prototype)上,所以它们不会被赋予从 Person 构造函数创建的对象,但可以从 Person 构造函数对象本身获取。

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

关于javascript - 在构造函数上定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25986108/

相关文章:

javascript - 为什么不带括号调用 new Date?

javascript - 我们可以将 mql 查询输出导出到 Google 文档吗

ios - 在类方法之间匹配 2 个 NSString 值

javascript - 如何检测用户对地理定位的负面 react

java - Java中泛型类型的冒泡排序问题

java - 如何在不使用 "%"运算符的情况下计算两个数字的余数/模?

c++ - 像 C::C(const C&&) 这样的构造函数我们怎么调用它?除了禁止从 const 移动外,还有其他用途吗?

c++ - 从 C 字符串构造 std::string 与从另一个 std::string 构造不一致

javascript - 如何在 localStorage 中保存复选框状态

javascript - 通过express发送pdf到js客户端并下载