如何最好地覆盖Javascript对象方法
我使用的框架允许包含JS文件。在我的JS文件顶部,我有如下内容:如何最好地覆盖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) { ... }; 我想改变
<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()
的新函数中?