2012-01-27 77 views
1

我想創建一個數組,可以通過我的任何功能的任何時間延長,也可稱爲(該數組中的所有功能,應呼籲陣調用)。如何用javascript和jquery做這樣的事情?如何創建可調用的函數數組?

爲什麼我需要這樣的東西:

我創建1大,25個小JS文件的每個小文件可還是不納入文件。每個小文件都會在需要時生成一些html。但是,當產生新的HTML我經常需要某種形式的UI茶點 - 一些div調整大小或至少檢查大小等,所以,我需要的功能,所有小JS腳本的陣列投入它,他們需要所有UI茶點,上當它創建更多的HTML代碼時,每個小JS文件都會調用該數組。 (如果有somjething喜歡的$(document).htmlDataChange jQuery中我不會需要在所有這樣的東西。)

+0

如果我們知道你爲什麼要這樣,這將是有用的。與一系列函數不同,您的用例可能更適合採用不同的方法。在Javascript中,您可以將多個事件處理程序連接到一個函數。 – 2012-01-27 16:16:12

+0

你能澄清一下嗎?你能告訴我們一些僞代碼什麼的嗎?你想要的功能的陣列,或者你想通過添加自己的功能,它的原型擴展數組對象? – 2012-01-27 16:16:29

回答

1

我將創建一個具有屬性以保存對象函數,並添加,刪除和運行方法。

var myobj = myobj || {}; 
    myobj.functions = []; 
    myobj.add = function(fn){ 
        myobj.functions.push(fn); 
       }; 
    myobj.remove = function(fn){ 
        myobj.functions.splice(myobj.functions.indexOf(fn), 1); 
        }; 
    myobj.run = function(){ 
        myobj.functions.forEach(function(cb){ 
        if (typeof cb == "function") { 
         cb.call(); 
        } 
        }); 
       }; 
2

您可以使用它的原型一直延伸陣列。

Array.prototype.foo = function (param) 
{ 
    // Do Stuff 
}; 

示例如何清除數組

Array.prototype.clear = function() 
{ 
    this.length = 0; 
}; 

jQuery的也有 http://api.jquery.com/jQuery.each/

1

你不能使用數組這一點,因爲泰德沒有一個關鍵屬性:

//create the object 
var myObj = {}; 
//you fill it as you like 
myObj.see = function(param){//do something} 
myObj.hear = function(param){//do something else} 
myObj.feel = function(param){//do something else again} 

//once you are ready, you can call the functions as shown below: 
myObj.see(); 
myObj.hear(); 
相關問題