[英]How to redefine JS function keeping previous in chain
这是来自面向对象编程的常见任务,我想通过覆盖现有函数并可能调用它来更改JavaScript程序的行为。 我记得Windows在编写钩子并将它们链接时引入了它。 所以我想要一个网页,该网页调用一些onload挂钩,最后再调用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
};
有人可以帮忙吗?
一种选择是
var initFieldsInitial = initFields;
function initFields() {
// your stuff
initFieldsInitial.apply(this, arguments);
}
您可以尝试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();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.