我阅读了关于函数重载的 Jhon resig 帖子:
http://ejohn.org/blog/javascript-method-overloading/
功能:
function Users(){
addMethod(this, "find", function(){
// Find all users...
});
addMethod(this, "find", function(name){
// Find a user by name
});
addMethod(this, "find", function(first, last){
// Find a user by first and last name
});
}
// addMethod - By John Resig (MIT Licensed)
function addMethod(object, name, fn){
var old = object[ name ];
object[ name ] = function(){
if ( fn.length == arguments.length )
return fn.apply( this, arguments );
else if ( typeof old == 'function' )
return old.apply( this, arguments );
};
}
我理解这个概念。我无法理解的一件事是为什么每次else if
执行语句时return old.apply(this, arguments)
参数长度都会减一。
我使用警报来跟踪该功能,这是我无法理解的主要内容。
任何帮助将不胜感激。