如何最好地覆盖Javascript对象方法

时间:2011-09-12 00:58:32

标签: javascript methods override

我正在使用允许包含JS文件的框架。在我的JS文件的顶部,我有类似的东西:

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

我想覆盖在非常大的utils.lib.js文件中定义的相当小的方法。而不是直接在utils.lib.js中进行更改,这是一个框架的一部分文件,我只想覆盖一个方法。 utils.lib.js文件看起来像:

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

          return ans;
    },
    ...
 }

我想改变getData方法的作用。对不起基本问题,但在导入将JS内容复制到我的JS文件顶部的文件之后,我可以执行以下操作:

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

2 个答案:

答案 0 :(得分:3)

是的,您可以按照以下建议将该方法重新分配给您自己的函数:

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

这将成功更改调用.getData(input)属性时发生的情况。

答案 1 :(得分:0)

是的,你可以。

然而,Evaluator不是一个合适的“阶级”。你不能写var x = new Evaluator(); 所以你没有覆盖,只是改变变量getData。这就是为什么我们说在JavaScript中,函数是一等公民,被视为任何变量。