这是来自面向对象编程的常见任务,我想通过覆盖现有函数来改变JavaScript程序的行为,也可以调用它。我记得Windows介绍过写钩子和链接它们。所以我想要的是,我有一个网页,它调用一些onload hook,最后调用函数initFields。我想重新定义此函数,但请保留以前的实现。如果我只是将我的JS函数定义为
function initFields() {
// do some stuff ...
// I do not know how to call super.initFields() here
}
我读过你可以写的东西
initFields.prototype = function() {
// do some stuff ...
// but still have no idea how to call the original one
};
有人可以帮忙吗?
答案 0 :(得分:6)
一个选项是
var initFieldsInitial = initFields;
function initFields() {
// your stuff
initFieldsInitial.apply(this, arguments);
}
答案 1 :(得分:2)
您可以尝试使用underscore.js库中的wrap()函数。
http://documentcloud.github.com/underscore/#wrap
var initFields = function() {
// do something
console.log('initFields');
}
initFields = _.wrap(initFields, function(initial) {
// do some stuff
console.log('wrapper');
initial();
});
$(document).ready(function() {
initFields();
});