/**
* $Id$
* @title HHJsLib
* @description 基地Js库基础类
* @author xjiujiu (xjiujiu@foxmail.com)
* @create 2012-08-13 9:30:00
*/
(function($) {
//事件注册及自动初始化工具脚本
var HHJsLib = window.HHJsLib = function() {
//事件注册,寄存器[ 主要将需要执行的方法, 都保存到一个数组里面 ]
var _registered = {
init: []
};
return {
//初始化
init: function() {
//[这里会遍历这个寄存器中的数组,然后依次调用]
$.each(_registered.init, function(loc, item) {
//item 为一个数组,item[0] 为对象,item[1]为方法
//call方法,表示用item[0]调用item[1]
item[1].call(item[0]);
});
},
//内置通过ID来获取元素对象的方法
$$: function(id) {
return document.getElementById(id);
},
//扩展方法
//[一个小小的扩展方法,不过依旧存在问题,没有考虑prototype上的方法,这里应该用haswonprotype判断下]
extend: function(props) {
for(var i in props) {
if(undefined != props[i]) {
this[i] = props[i];
}
}
},
//事件的注册
//[这个算是核心了,这里需要是将当前的方法压入存储器中]
register: function(obj, func, attr) {
if(!_registered[attr]) {
_registered[attr] = [];
}
//向_registered中添加数组.
_registered[attr].push([obj, func]);
}
};
}();
//[那么这还有一个注意点,就是这里使用了一个 自启动的方法,返回一个对象,而该对象又有几个方法。那些方法中又关联中外部函数的存储器对象,所以就有了一个闭包的东西]
/*文档加载完成,调用初始化方法
初始化,调用init()方法,而在你的子类中,需要将你的方法注册到这个父类的init数组中来,
那么每次加载的时候就会自动加载子类的init()。
这里需要注意的就是子类的init();中需要注册需要用到的方法..
如: var comments = {
init:function(){
this.update();
this.del();
},
update:function(){
alert("update");
},
del:function(){
alert("delete");
}
};*/
$(function() { HHJsLib.init(); });
//这里需要将这个文件第最先加入,否则一切会不起作用。
})(jQuery);