2014-01-10 80 views
0

可能這個問題的標題是重複的,但我不能Google找到我需要的東西。 對於考試我有之前創建的js文件,在這個文件中,我定義一個函數如何在javascript中擴展一個存在的函數

function fun1() 
{ 
    alert("a"); 
} 

因此,我調用這個函數在一些「點擊」觸發器現在

$("button").click(function(e){ 
    fun1(); 
}) 

,我添加新的模塊和我不想改變定義功能1,我想擴展功能1這樣

function fun1ex() 
{ 
    alert("b"); 
} 

這意味着,當「按鈕」點擊,2個警報boxs將顯示(「A」)和(「b」) 我可以使用類和原型嗎? 但我無法想象如何去做。 感謝

+0

只需在'fun1ex()'裏面調用'fun1()'?或者讓click事件調用這兩個函數?保持簡單,不要試圖用類和原型過度複雜化它。 –

+0

感謝您的評論,但button.click函數是在第一個js文件中定義的。 – tungcan

回答

1

只是附加新的功能,單擊事件:

$("button").click(function(e){ 
    fun1(); 
}); 

$("button").click(function(e){ 
    fun1ex(); 
}); 

這將alert("a")alert("b")

+0

非常感謝您的解決方案,這非常好,但fun1()在第一個項目中調用了很多次,並且有很多操作,所以我不能在第二個項目中重新編寫它們。 – tungcan

1

,我認爲我們能在這次考試做這樣的事情

function mytest(text) { 
       this.text = text; 
       this.fun1 = function() { 
        alert("a "+text); 
       } 
       this.fun2 = function() { 
        alert("b "+text); 
       } 
       this.fun3 = function(){ 
        for(var i in this) { 
         //executeFunctionByName("mytest."+i, window) 
         //eval("mytest."+i); 
         if(typeof this[i] === "function" && i != "fun3") { 
          this[i](); 
         } 
          //alert(typeof this[i]); 
        } 

       } 
      } 

      mytest.prototype.fun4 = function() { 
       alert("c " + this.text); 
      } 

      var test1 = new mytest("tung"); 
      test1.fun3(); 

我定義了fun3來執行另一個項目中test1對象(fun3) 中可用的所有方法(或js文件)我可以創建新的protopye函數來擴展fun3。

mytest.prototype.fun4 = function() { 
        alert("c " + this.text); 
       } 

可能很多人都知道這一點,但我希望它對像我這樣的新手都有用。 謝謝