如何创建可调用的函数数组?

时间:2012-01-27 16:13:50

标签: javascript jquery html arrays function

我想创建一个数组,可以随时通过我的任何函数进行扩展,也可以调用(该数组中的所有函数都应在数组调用时调用)。如何使用javascript和jquery做这样的事情?

为什么我需要这样的东西:

我创建了1个大的和25个小的JS文件,每个小文件都可以包含或不包含在文档中。每个小文件都会在需要时生成一些html。但是当它生成新的html时,我经常需要某种UI刷新 - 一些div要调整大小或至少检查大小等等。所以我需要一个函数数组,以便所有小型JS脚本都可以将所有需要的UI刷新放入其中,每个小JS文件的onter hend会在创建更多HTML代码时调用该数组。 (如果在jQuery中有像$(document).htmlDataChange这样的somjething,我根本不需要这样的东西。)

3 个答案:

答案 0 :(得分:2)

您始终可以使用其原型来扩展Array。

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

如何清除数组的示例

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

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

答案 1 :(得分: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();

答案 2 :(得分: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(); 
                    }
                  });
                };