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

JavaScript OOP(2)定义JavaScript类

 2010-09-14 13:42:35 来源:WEB开发网   
核心提示: function Student(id,name,skill){this.Id=id;this.Name=name;this.Skill=skill;this.Likes=new Array("编码","游戏");if(typeof(Student.

function Student(id,name,skill)
{
this.Id=id;
this.Name=name;
this.Skill=skill;
this.Likes=new Array("编码","游戏");
if(typeof(Student._initialized)=="undefined")
{
Student.prototype.ShowSkill=function()
{
alert(this.Skill);
}
Student._initialized=true;
}
}
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);

在上例中,运行结果与混合方式是一致的。动态原型方式实现了对象间属性的独立和方法的共享。

实际上,动态原型方式和混合方式非常相似。唯一的不同在于动态原型添加了1个if判断,这里肯定让很多读者不解。typeof(Student._initialized)到底是什么?实际上Student._initialized是由开发者自定义的属性,用于判断当前对象是否被实例化了。

在对象初始化完成前,Student._initialized并没有被声明或实例化,所以Student._initialized一定是undefined,那么就一定会执行if中的代码。If中的代码让对象的ShowSkill函数属性成为1个函数的引用,这样就实现了方法被所有对象公有。

学习了如此多的创造类的方式,到底应该使用那种最好呢?请仔细阅读下一节。

5.1.8 实例以及实例方式使用的注意事项

在面向对象的JavaScript开发中,目前使用最广泛的是混合方式。动态原型方式也能够实现面向对象的基本特征,并且越来越流行。在开发中,可以采用这两种方式中的任何一种。尽量不要单独使用工厂方式、构造函数方式、原型方式的任何一种,否则会给开发带来不可预期的问题。

系列文章:

JavaScript OOP(1)面向对象基础

上一页  1 2 3 4 5 

Tags:JavaScript OOP 定义

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