2012-07-09 192 views
1

如果我有这样的功能:可以将附加功能绑定到某个功能吗?

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

有没有在页面的不同部分结合的额外功能,相同功能的方法吗?

像这样:

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

可能重复:http://stackoverflow.com/questions/296667/overriding-a-javascript-function-while-referencing-the-original – Adi 2012-07-09 12:30:11

+0

你为什么要这么做?这会使代码无法阅读! – 2012-07-09 12:30:14

+0

相同功能的附加功能,例如“关闭模式”功能。而不是绑定到调用该函数的相同元素。 – 2012-07-09 12:31:33

回答

4

您可以调用旧功能的新功能覆盖功能。

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

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

showAlert(); 

​ 
+0

...并且您甚至不必为第一个版本使用'var showAlert = function()',对。 ) 好一个。 – raina77ow 2012-07-09 12:36:18

0

那么,可以简单地重新定义函数:

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

var originalShowAlert = showAlert; 

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

showAlert(); 
0

由于功能被简单地视为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");