[英]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.