繁体   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