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

How best to overwrite a Javascript object method

本文关键字:对象 方法 Javascript 覆盖 何最好      更新时间:2023-09-26

我正在使用一个允许包含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)
                {
                  ...
                };

是的,你可以把这个方法重新分配给你自己的函数,正如你所建议的:

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

这将成功地改变.getData(input)属性被调用时发生的事情。

你可以。

然而,Evaluator并不是一个合适的"类"。你不能写var x = new Evaluator();所以你没有重写,而只是改变变量getData。这就是为什么我们说,在JavaScript中,函数是一等公民,就像任何变量一样。