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

如何最好地覆盖Javascript对象方法,javascript,methods,overriding,Javascript,Methods,Overriding,我使用的框架允许包含JS文件。在我的JS文件顶部,我有如下内容: <import resource="classpath:/templates/webscripts/org/mycompany/projects/library/utils.lib.js"> Evaluator.getData = function Mine_getData(input) { ... }; 我想改变

我使用的框架允许包含JS文件。在我的JS文件顶部,我有如下内容:

<import resource="classpath:/templates/webscripts/org/mycompany/projects/library/utils.lib.js">
 Evaluator.getData = function Mine_getData(input)
                {
                  ...
                };
我想改变getData方法的功能。对于这个基本问题,我很抱歉,但是在导入将JS内容复制到我的JS文件顶部的文件后,我是否可以执行以下操作:

<import resource="classpath:/templates/webscripts/org/mycompany/projects/library/utils.lib.js">
 Evaluator.getData = function Mine_getData(input)
                {
                  ...
                };

是的,您可以将该方法重新分配给您自己的函数,正如您建议的那样:

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

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

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

 Evaluator.getData = function Mine_getData(input)
 {
     ...
 };
这将成功更改调用
.getData(input)
属性时发生的情况。

可以

然而,Evaluator不是一个合适的“类”。无法编写var x=new Evaluator(); 因此,您不是在重写,而是在更改变量getData。这就是为什么我们说在JavaScript中,函数是一等公民,被视为任何变量。

是的,你可以

然而,Evaluator不是一个合适的“类”。无法编写var x=new Evaluator();
因此,您不是在重写,而是在更改变量getData。这就是为什么我们说在JavaScript中,函数是一等公民,被视为任何变量。

如何加载原始函数?通过执行
var foo=Evaluator.getData预先保存它
和之后的调用新函数
foo()
?如何加载原始函数?通过执行
var foo=Evaluator.getData预先保存它
及其后在调用
foo()
的新函数中?