一部の引数を受け入れる関数callwithargsを、引数のない別の新しい関数callwithargsで完全にオーバーライドすることは可能ですか?
function callwithargs(a, b, c){
if(arg.length){
do this
}else{
do something else
}
}
function callwithargs(){
do a new thing
}
一部の引数を受け入れる関数callwithargsを、引数のない別の新しい関数callwithargsで完全にオーバーライドすることは可能ですか?
function callwithargs(a, b, c){
if(arg.length){
do this
}else{
do something else
}
}
function callwithargs(){
do a new thing
}
はい、javascriptには、関数の一意の識別子としてパラメータの数は含まれていません。 function callwithargs(...)
。という名前のグローバルオブジェクトのプロパティを定義しますcallwithargs
。そのプロパティを再度定義すると、上書きされます。
実際、たとえば言うことでオーバーライドすることもできます。これによりcallwithargs = 2
、プロパティが数値で上書きされます。
私は似たようなことをしました、そしてこれがあなたの答えにつながることを願っています。基本的に私の場合、関数はオブジェクトにアタッチされ、オブジェクトが初期化された後、その関数を次のように新しい関数に置き換えました。
var oldFunction = myObject.theFunction;
myObject.theFunction = function () {
// my new function
var result = oldFunction.apply(this, arguments); // Calls the old function using the arguments keyword
return result;
};