首先去下载jquerymx.custom.js, 我的资源里有提供下载http://download.csdn.net/download/zfc2201/5131469。
$.Class类提供了一个模拟类继承的方式,它弥补了jquery函数式编程和面向对象编程的不足,它根据jquery之父(John Resig)的一篇博文改编而来(http://ejohn.org/blog/simple-javascript-inheritance/|Simple Class)。
$.Class是基于原型继承的,它主要以下几个重要的特性:
1.静态继承。
2.内省。
3.命名空间。
4.Setup和init初始化方法。
5.易于创建回调函数。
在学习Class之前,明白类的静态属性和原型属性的不同是很重要的。
//STATIC
MyClass.staticProperty //shared property
//PROTOTYPE
myclass = new MyClass();
myclass.prototypeMethod() //instance method
静态属性能被类自己的构造函数和类的所有实例所共享,而实例属性只能用于类的实例。
下面举例一个基本的类,用于说明静态属性与实例属性的区别:
function out(msg) {
console.log(msg);
}
$.Class('Monster',
/* @static */
{
count : 0
},
/* @prototype */
{
init : function(name) {
// saves name on the monster instance
this.name = name;
// sets the health
this.health = 10;
// increments count
this.constructor.count++;
},
eat : function(smallChildren) {
this.health += smallChildren;
return this.health;
},
fight : function() {
this.health -= 2;
return this.health;
}
});
var hydra = new Monster('hydra');
var dragon = new Monster('dragon');
out(hydra.name);
// -> hydra
out(Monster.count);
// -> 2
out(Monster.shortName);
// -> 'Monster'
out(hydra.eat(2)); // health = 12
out(dragon.fight()); // health = 8
从上面的例子可以看出来,count是静态属性,它被类的两个实例共享,而实例属性health两个实例各自拥有一份,彼此不相互影响。
需要注意的是当实例被创建时,类的init方法被调用了。