javascript 中的虚函数是什么?

What are virtual functions in javascript?

根据虚函数的一种定义:

In object-oriented programming, in languages such as C++, a virtual function or virtual method is an inheritable and overridable function or method for which dynamic dispatch is facilitated.

这将如何查找 javascript 中的函数?

How would this look for functions in javascript?

这个概念在很大程度上不适用于 JavaScript。

虚函数和非虚函数(实际上是方法)的概念需要对对象的类型引用的概念,这与对象。例如,您可能有一个带有 bar 方法的 BaseFoo 类型,以及一个从它派生并覆盖 barDerivedFoo 类型。稍后,如果您有一个 BaseFoo 类型的变量 b 引用 DerivedFoo 对象,当您调用 b.bar() 时,您将得到 DerivedFoobar 如果 bar 是虚拟的,但是 BaseFoobar 如果 bar 是非虚拟的。但是如果你有一个 DerivedFoo 类型的变量 d 引用一个 DerivedFoo 对象,d.bar() 总是调用 bar 不管它是否是虚拟的。您用来引用对象的变量的 类型 决定了如果该方法是非虚拟的,将调用哪个方法。

None 存在于 JavaScript 中。对对象的引用是 未类型化的 。当您调用 o.bar() 时,您会从该对象获取 属性 bar 并调用它所引用的函数。

如果你想延伸一点,鉴于 JavaScript 的原型继承机制,你可以说在某种意义上,所有 JavaScript "methods" 都是虚拟的,如果我们 非常 松散地说 "method" 是附加到对象 属性 的函数(尽管在 ES2015+ 中, "method" 在 [=53= 中具有更具体的含义] 比那个,但仍然符合那个定义)。那是因为当你在一个对象上查找 属性 时,如果它有自己的 属性 用那个名字,那就是你得到的;如果它没有自己的,你只能从它的原型中得到一个。但这可能延伸了一点,也许太远了。