varCat=newClass({ 
initialize:function(name){ 
this.name=name; 
} 
}); 
varmyCat=newCat('Micia'); 
alert(myCat.name);//alerts'Micia' 
varCow=newClass({ 
initialize:function(){ 
alert('moooo'); 
} 
}); 
b、继承的实现
复制代码 代码如下:
 
varAnimal=newClass({ 
initialize:function(age){ 
this.age=age; 
} 
}); 
varCat=newClass({ 
Extends:Animal, 
initialize:function(name,age){ 
this.parent(age);//callsinitalizemethodofAnimalclass 
this.name=name; 
} 
}); 
varmyCat=newCat('Micia',20); 
alert(myCat.name);//alerts'Micia'. 
alert(myCat.age);//alerts20. 
c、扩充类的实现
复制代码 代码如下:
 
varAnimal=newClass({ 
initialize:function(age){ 
this.age=age; 
} 
}); 
varCat=newClass({ 
Implements:Animal, 
setName:function(name){ 
this.name=name 
} 
}); 
varmyAnimal=newCat(20); 
myAnimal.setName('Micia'); 
alert(myAnimal.name);//alerts'Micia'. 
五、悟透javascript:语法甘露
先看用法实例
a、创建类
复制代码 代码如下:
 
//创建类Person 
varPerson=Class(object,{ 
Create:function(name,age){ 
this.name=name; 
this.age=age; 
}, 
SayHello:function(){ 
alert("Hello,I'm"+this.name+","+this.age+"yearsold."); 
} 
}); 
varBillGates=New(Person,["BillGates",53]); 
BillGates.SayHello(); 
b、继承类
复制代码 代码如下:
 
//Employee继承Person 
varEmployee=Class(Person,{ 
Create:function(name,age,salary){ 
Person.Create.call(this,name,age); 
//调用基类的构造函数 
this.salary=salary; 
}, 
ShowMeTheMoney:function(){ 
alert(this.name+"$"+this.salary); 
} 
}); 
varSteveJobs=New(Employee,["SteveJobs",53,1234]); 
SteveJobs.SayHello(); 
SteveJobs.ShowMeTheMoney(); 
下面是源码分析:显然,多了一个New方法,创建类和新建类的实例都被巧妙的封装了。形成了一个有意义的整体!还有一点不同的地方,所有的类都基于字面量,而不是基于函数。代码很简短,但其中原理却很丰富也很巧妙,可以细细品味一番!
复制代码 代码如下:
 
//创建类的函数,用于声明类及继承关系 
functionClass(aBaseClass,aClassDefine){ 
//创建类的临时函数壳 
functionclass_(){ 
this.Type=aBaseClass; 
//我们给每一个类约定一个Type属性,引用其继承的类 
for(varmemberinaClassDefine) 
this[member]=aClassDefine[member]; 
//复制类的全部定义到当前创建的类 
}; 
class_.prototype=aBaseClass; 
returnnewclass_(); 
}; 
//创建对象的函数,用于任意类的对象创建 
functionNew(aClass,aParams){ 
//创建对象的临时函数壳 
functionnew_(){ 
this.Type=aClass; 
//我们也给每一个对象约定一个Type属性,据此可以访问到对象所属的类 
if(aClass.Create) 
aClass.Create.apply(this,aParams); 
//我们约定所有类的构造函数都叫Create,这和DELPHI比较相似 
}; 
new_.prototype=aClass; 
returnnewnew_(); 
}; 
由于写的比较笼统,可能有很多地方没有解析到,也可能有不准确的地方,还望指正。
看完上面几种解析,相信息自己也可以写出一个自己的封装类库出来,至于,怎么实现看个人喜好了。但基本的思都是一样的基于原型的继承方式和循环拷贝新方法。
原文来自:穆乙
您可能感兴趣的文章:
