类的定义有3种基本方法:
1、创建并能返回特定类型的对象的函数(工厂函数)如:
function wu()
{
var w=new object;
o.a=1;
return o;
}用这种方式创建对象:var u=wu();
2、创建构造函数,用new实例化例如:
function wu()
{this.a=1;}
用这种方式创建对象: var u=new wu();
3、原型方式,利用对象prototype的属性例如:
function wu()
{}
wu.prototype.a=1;
用这种方式创建对象 var u=new wu();
类的继承
类的继承有两种
对象冒充基本原理:构造函数使用this关键字给所有的属性和方法赋值(构造函数仅仅是赋值函数),所以可以利用一种方式,在类内部直接运行赋值函数,把this关键字传递给新类:
如:
var a=function()
{
this.a=1;
this.b=1;
alert(this);
}
var b=function()
{
this.aa=a;//对a中的this 进行转换,同样的方式还有
this.aa();
delete this.aa;//要把这个中间方法删除掉,否则会在以后的操作中覆盖原来类的方法
//或者
a.call(this,arg1,arg2);
//或者
a.apply(this,[args]);
}
var ob=new b();
原型链:
基本原理:关于原型链,详见(http://www.javaeye.com/topic/53537)把超类的一个实例付给子类的prototype对象,即可把超类的固定属性和方法传递给子类,要注意一点,这种方法无法在实例化时传递参数,所以一般采用混合方式进行类的继承。
prototype.js中的类定义和继承 :
/** obsolete syntax **/
var person=Class.create();//通过class.create方法创建一个空类
person.prototype={
//把方法定义到prototype中,注意,是通过initalize方法初始化类的属性
initilazie:function(name){
this.name=name;
},
say:function(message){
return this name+":"+message;
}
}
var guy=new person('wu');
guy.say('hi');