重载与重写在JavaScript中

在最近的一次JavaScript采访中,我被问到过载与覆盖。 我知道这是Java中的一个概念:

https://softwareengineering.stackexchange.com/questions/164353/whats-the-difference-between-overloading-a-method-and-overriding-it-in-java

但是JavaScript中是否有类似的东西?如果是的话,代码示例是什么? 我的理解是,重载在JavaScript中并不常见。 为什么你需要在JS中使用“重载”?

OverRiding对我来说更加清晰 - 一个过度骑乘的例子就是在继承超级类的地方,但是通过一些方法/属性来为子类创建独特的方法/属性。


JavaScript不支持重载。

JavaScript支持覆盖,所以如果你定义了两个具有相同名称的函数,那么定义的最后一个函数将覆盖先前定义的版本,并且每次调用该函数时,最后定义的一个将被执行。

更多阅读这里http://blog.mastykarz.nl/overloading-functions-javascript/


在这里有一个很好的例子,就是'伪装'JavaScript函数重载:https://stackoverflow.com/a/457589/2754135

你基本上在你的函数中使用一个参数来接受一个对象,该对象包含你想要的任意数量的参数。

这实际上并没有明显的超载,因为这在JavaScript中是不可能的。


由于其动态特性,在javascript中不需要重载的传统概念。 在更传统的编程语言中,作为Java,您可以使用不同的签名多次定义一个方法,并且语言将正确使用您想调用的方法,只需使用签名即可:称为方法的重载。 另一方面,override可以重新定义子类中父类的方法。 要在javascript中执行重载,通常会使用名为options的最后一个参数。 例如

function yourFunction(firstParam, secondParam, options) {};

这些选项只是一个JavaScript对象,有你想要传递的道具。 然后你可以使用所谓的“选项”模式来检查道具。 为了重写它,纯JavaScript中的难度更大,因为语言的原型性质:当您用新的基础对象“扩展”基础对象时,可以使用构造函数对象的.call()函数来传递它以装饰新的用父项道具创建对象。

链接地址: http://www.djcxy.com/p/51987.html

上一篇: overloading vs overriding in javascript

下一篇: Is it bad practice to have a switch case in a switch case?