簡體   English   中英

如何重新定義JS函數以保持先前的狀態

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM