首页 > 解决方案 > 为什么构造函数可以调用 Javascript 中的方法?

问题描述

我对 Javascript 很陌生,并且来自经典的 OOP 背景。

我最近注意到的一件事是构造函数可以调用 Javascript 中的方法,例如Object.getPrototypeOf(). 我想知道在这种情况下如何在构造函数中定义该方法?

标签: javascript

解决方案


类和函数也是对象,对象上可以设置任意键值对。这并不完全常见,有时是代码异味,但这是可能的。值也可以是函数,所以如果你访问一个作为函数的属性,你可以调用它:

function FooFunc(arg) {
  this.name = arg;
}
FooFunc.prop1 = 'val';
FooFunc.prop2 = () => console.log('prop2 invoked');
FooFunc.prop2();

class FooClass {
  constructor(arg) {
    this.name = arg;
  }
}
FooClass.prop2 = () => console.log('prop2 invoked');
FooClass.prop2();

// Classes can also do this with the static keyword:
class FooClass2 {
  constructor(arg) {
    this.name = arg;
  }
  static prop2() {
    console.log('prop2 invoked');
  }
}
FooClass2.prop2();

// None of this interfers with creating and using normal instances:
const foo = new FooClass('bob');
console.log(foo.name);


推荐阅读