2011-09-12 11 views
0

JSファイルをインクルードできるフレームワークを使用しています。Javascriptオブジェクトメソッドを上書きするにはどうすればいいですか

<import resource="classpath:/templates/webscripts/org/mycompany/projects/library/utils.lib.js"> 

は、私は非常に大規模なutils.lib.jsファイルで定義されてかなり小さいメソッドをオーバーライドしたい:私のJSファイルの上部には、私のようなものを持っています。フレームワークの一部であるファイルutils.lib.jsで直接変更するのではなく、ただ一つのメソッドを上書きしたいのです。私はちょうど方法のgetDataが何を変更したい

var Evaluator = 
{ 
    /** 
    * Data evaluator 
    */ 
    getData: function Evaluator_getData(input) 
    { 
      var ans; 

      return ans; 
    }, 
    ... 
} 

:utils.lib.jsファイルは、のようなものがあります。基本的な質問のため申し訳ありませんが、私のJSファイルの先頭にどのコピーJSコンテンツファイルをインポートした後、私はちょうどのような何か行うことができます。

Evaluator.getData = function Mine_getData(input) 
       { 
        ... 
       }; 
+2

試しましたか? –

答えて

3

をはい、あなたは自分自身の関数にそのメソッドを再割り当てすることができますあなたが提案してきたように:

Evaluator.getData = function Mine_getData(input) 
{ 
    ... 
}; 

これが成功し.getData(input)プロパティが呼び出されたときに何が起こるか変更されます。

+2

元の関数をどのように読み込むのですか? 'var foo = Evaluator.getData;'と 'foo()'を呼び出す新しい関数のあとでそれを事前に保存しますか? – simbabque

0

はいできます。

ただし、Evaluatorは適切な「クラス」ではありません。 var x = new Evaluator();を書くことはできません。 したがって、上書きしないで、変数getDataを変更するだけです。そのため、JavaScriptでは、関数はすべての変数のように扱われるファーストクラスの市民であると言います。

関連する問題