WEB开发网
开发学院网页设计JavaScript JavaScript OOP(2)定义JavaScript类 阅读

JavaScript OOP(2)定义JavaScript类

 2010-09-14 13:42:35 来源:WEB开发网   
核心提示: 原型方式、构造方式、工厂方式等等方法都有不可弥补的缺陷,到底那种方式可以完美的实现对象的创建呢?现在使用最多的方式是混合方式,JavaScript OOP(2)定义JavaScript类(4),混合方式是指联合使用构造函数和原型方式,就可以像其他面向对象语言一样创建对象了,混合方式并没有对

原型方式、构造方式、工厂方式等等方法都有不可弥补的缺陷,到底那种方式可以完美的实现对象的创建呢?现在使用最多的方式是混合方式,混合方式是指联合使用构造函数和原型方式,就可以像其他面向对象语言一样创建对象了。

混合方式是通过构造函数方式定义对象的所有非函数属性,用原型方式定义对象的函数属性。使用混合方式可以规避构造函数方式和原型方式的缺陷。对象实例化时,所有的属性都是单一对象私有的,而方法则是所有对象公有的。使用混合方式,修改上例的代码如下:

function Student(id,name,skill)
{
this.ID=id;
this.Name=name;
this.Skill=skill;
this.Likes=new Array("编码","游戏");
}//构造函数定义对象的非函数属性
Student.prototype.ShowSkill=function()//通过原型方式定义对象的函数
{
alert(this.Skill);
}
var stu1=new Student(1,"Hongbo","Ajax");
var stu2=new Student(2,"Reader","JavaScript");
stu2.Likes.push("旅行");
stu1.ShowSkill();
stu2.ShowSkill();
alert(stu1.Likes);<!--注意这里的消息框-->
alert(stu2.Likes);

运行以上的代码,可以看到stu1、stu2的Likes属性并不一致,它们保持了各自属性的独立。stu1、stu2调用ShowSkill()方法,可以看到消息框中的消息不一致,即方法识别了this指针。ShowSkill()方法实现了所有对象的公有。

读者看到混合方式时,肯定还是伴随着失望。因为混合方式和传统的面向对象语言还是有很大的差别,混合方式并没有对对象的属性和方法进行严密的封装。在JavaScript中,提供了动态原型方式进行对对象的属性和方法进行严密封装。实现动态原型方法代码如下:

上一页  1 2 3 4 5  下一页

Tags:JavaScript OOP 定义

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接