【问题标题】:Can additional functionality be binded to a function?可以将附加功能绑定到函数吗?
【发布时间】:2012-07-08 20:21:53
【问题描述】:

如果我有这样的功能:

 function showAlert() {
   alert("1");
 }

有没有办法将附加功能绑定到页面不同部分的相同功能?

像这样:

 function showAlert() {
   alert("1");
   alert("2");
 }

【问题讨论】:

  • 您为什么要这样做?那会使代码无法阅读!
  • 同一函数的附加功能,如close modal 函数。而不是绑定到调用函数的同一元素。

标签: javascript jquery


【解决方案1】:

您可以用调用旧函数的新函数覆盖该函数。

 function showAlert() {
   alert("1");
 }

showAlert = (function (original){
 return function () {
   original();
   alert("2");
 }
}(showAlert));

showAlert();

​

【讨论】:

  • ... 你甚至不必在第一个版本中使用var showAlert = function(),对吧。 ) 不错。
【解决方案2】:

嗯,你可以简单地重新定义函数:

function showAlert() {
    alert("1");
}

var originalShowAlert = showAlert;

showAlert = function(){
    originalShowAlert();
    alert("2");
}

showAlert();

【讨论】:

    【解决方案3】:

    由于函数在 JS 中被简单地视为对象,因此您可以维护一个函数数组,然后在循环中执行每个函数。这允许您将任何类型的函数添加到集合中(如果您保留索引,甚至可以在以后删除它们),而不会中断执行序列。

    var funk = [];
    
    funk.push(function showAlert1()
    {
        alert("1");
    });
    
    funk.push(function showAlert2()
    {
    
        alert("2");
    });
    
    
    funk.push(function showAlertFromMsg()
    {
        alert("You passed " + this);
    
    });
    
    
    for(var i=0,len=funk.length; i<len; i++) funk[i].call("This is my message");
    

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 2012-05-23
      • 2013-03-18
      • 1970-01-01
      • 2011-09-06
      相关资源
      最近更新 更多