我是 javaScript 的新手,我正在做一些继承。我以为我知道原型(prototype)是什么,但后来我遇到了 super 方法。现在我不知道这两者之间的区别。 我知道 uber 就像 java 中的 super,仅此而已。但是原型(prototype)是困扰我的事情。 如果您能给我一些使用这两者的简单示例,我将不胜感激。
最佳答案
uber
只是 Douglas Crockford 在他的 JavaScript 继承示例中创建的一个糖方法,在使用 JavaScript 原型(prototype)继承的非常非常灵活的特性时,它应该有助于开发人员。
native JavaScript 中不存在此方法。
他详细解释了他使用的糖方法here .
在他的示例中,他定义了 uber
方法作为辅助方法来访问方法的父实现。
让我们假设您有一个“类”(我使用这个术语来简化示例;严格来说,JavaScript 中没有类)Human
它有一个 walk
方法。如果您现在在 Infant
中“扩展”此类类,你可以覆盖 walk
婴儿不会走路,只能爬行。
这显然不是一个很好的例子,但我希望你能明白这一点。
在这种情况下,您可以使用 Douglas Crockfords uber
访问Human
的方法实现walk
在Infant
“类”。
比较原生 JavaScript prototype
对象和道格拉斯克罗克福德 uber
方法没有任何意义,因为两者的用途完全不同。
如果您想了解有关 JavaScript 的更多信息 prototype
你可以看看this question .
关于 super 和原型(prototype)之间的Javascript区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27941462/