假设您有两个具有以下签名的函数:
addClass( class )addClass( class, duration )这些住在第三方图书馆(没有奖品可以猜测哪个!!).
如果addClass()使用两个参数调用但仅注册了签名1,则不会出现错误,并且将调用签名1.第二个参数被忽略.
那么有没有办法检测到已经注册了两个参数的签名2 ?
Guf*_*ffa 27
您可以使用length函数对象的属性来检查签名.例:
function x(a) {}
function y(a,b) {}
alert(x.length); // shows "1"
alert(y.length); // shows "2"
Run Code Online (Sandbox Code Playgroud)
JavaScript中没有本机方法重载.您可以创建自己的:http://ejohn.org/blog/javascript-method-overloading/
(2015年11月5日更新:链接似乎已经死了,这是Google Cache版本)
所以,如果你这样做
function addClass( class ) { console.log('1 arg'); };
function addClass( class, duration ) { console.log('2 args'); };
Run Code Online (Sandbox Code Playgroud)
第二个覆盖第一个.所以即使你调用"addClass(1)",输出仍然是"2 args".和做的一样
someObject.addClass = function(a) {...}
someObject.addClass = function(a, b) {...}
Run Code Online (Sandbox Code Playgroud)
第一个"版本"将丢失.
| 归档时间: |
|
| 查看次数: |
6353 次 |
| 最近记录: |