関数のオーバーロードに関するJhonresigの投稿を読みました。
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
私が理解できないことの1つは、ステートメントが引数を実行するたびにreturn old.apply(this, arguments)
、引数の長さが1つ減る理由です。
私はアラートを使用して機能を追跡しましたが、それが私が理解できない主なことです。
任意の支援をいただければ幸いです。