0

一部の引数を受け入れる関数callwithargsを、引数のない別の新しい関数callwithargsで完全にオーバーライドすることは可能ですか?

function callwithargs(a, b, c){
       if(arg.length){
        do this
     }else{
        do something else
    }
    }

function callwithargs(){
  do a new thing
} 
4

2 に答える 2

2

はい、javascriptには、関数の一意の識別子としてパラメータの数は含まれていません。 function callwithargs(...)。という名前のグローバルオブジェクトのプロパティを定義しますcallwithargs。そのプロパティを再度定義すると、上書きされます。

実際、たとえば言うことでオーバーライドすることもできます。これによりcallwithargs = 2、プロパティが数値で上書きされます。

于 2013-02-06T20:14:33.203 に答える
1

私は似たようなことをしました、そしてこれがあなたの答えにつながることを願っています。基本的に私の場合、関数はオブジェクトにアタッチされ、オブジェクトが初期化された後、その関数を次のように新しい関数に置き換えました。

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;
};
于 2013-02-06T20:14:18.607 に答える