












1)理解类的实现机制
在JavaScript中可以用function关键字来定义一个"类",并为类添加成员.在函数内部通过this指针引用的常量或者方法都会成为类的成员,例如:
function class1(){
var s="abc";
this.p1=s;
this.method1=function(){
alert("this is a test method");
}
}
var obj1=new class1();
通过这整个过程,
JavaScript就实现了面向对象的基本机制.this.method1 = function(){
alert("this is a test method");
}
2)使用prototype原型对象来定义类成员.
当new一个function时,该函数对象的成员将自动赋给所创建的对象.例如:
<script language="JavaScript" type="text/javascript">
//定义一个只有一个属性prop的类
function class1(){
this.prop=1;
}
//使用函数的prototype属性给类定义新成员
class1.prototype.showProp=function(){
alert(this.prop);
}
//创建class1的一个实例
var obj1=new class1();
//调用通过prototype原型对象定义的showProp方法
obj1.showProp();
</script>
和上一节的new相比,多了用prototype来初始化对象的过程.这个初始化过程发生了函数体(构造器)执行之前,所以可以在函数体内部调用prototype中定义的属性和方法,例如:
<script language="JavaScript" type="text/javascript">
//定义一个只有一个属性prop的类
function class1(){
//由于class1的prototype现在已经被赋给了this指向的对象,因此可以调用showProp方法了.
this.prop=1;
this.showProp();
}
//使用函数的prototype属性给类定义新成员
class1.prototype.showProp=function(){
alert(this.prop);
}
//创建class1的一个实例
var obj1=new class1();
</script>
function class1(){
alert(1);
}
class1.prototype.constructor(); //调用类的构造函数
3)一种JavaScript类的设计模式
前面已经介绍了如何定义一个类,如何初始化一个类的实例,且类可以在function定义的函数体中添加成员,又可以用prototype定义类的成员,编程的代码显得混乱。如何以一种清晰的方式来定义类呢?下面给出了一种类的实现模式。function class1(){
//构造函数
}
//通过指定prototype对象来实现类的成员定义
class1.prototype = {
someProperty:"sample", //属性
someMethod:function(){
//方法代码
}
//
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。