我想创建一个数组,可以随时通过我的任何函数进行扩展,也可以调用(该数组中的所有函数都应在数组调用时调用)。如何使用javascript和jquery做这样的事情?
为什么我需要这样的东西:
我创建了1个大的和25个小的JS文件,每个小文件都可以包含或不包含在文档中。每个小文件都会在需要时生成一些html。但是当它生成新的html时,我经常需要某种UI刷新 - 一些div要调整大小或至少检查大小等等。所以我需要一个函数数组,以便所有小型JS脚本都可以将所有需要的UI刷新放入其中,每个小JS文件的onter hend会在创建更多HTML代码时调用该数组。 (如果在jQuery中有像$(document).htmlDataChange这样的somjething,我根本不需要这样的东西。)
答案 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();
}
});
};