对象如何变得像 Javascript 中的函数一样可调用?

Sus*_*ano 5 javascript

那么只要 Javascript 中的任何东西实际上都是对象,那么是什么让对象表现得像函数呢?哪些内部属性和标签使对象表现得像我们可以调用的对象,而不仅仅是用它来存储值?

FZs*_*FZs 6

有一个内部属性[[Call]],它决定了调用该对象时将执行什么。

普通对象没有这个内部属性,因此它们不可调用,也不能设为可调用

JS 中唯一的可调用对象是:

  • 函数(也是对象),
  • 类(实际上是函数,因此也是对象),以及
  • 包装可调用对象的代理对象。

要创建可调用对象,您必须创建一个函数并使其具有所需的属性和原型。