JavaScript中类的定义[3]

5.较好的自定义类的方式

前面已经介绍了如何定义一个类,如何初始化一个类的实例,且类可以在function定义的函数体中添加成员,又可以用prototype定义类的成员,编程的代码显得混乱。

如何以一种清晰的方式来定义类呢?下面给出了一种类的实现模式。   

JavaScript中,由于对象灵活的性质,在构造函数中也可以为类添加成员,在增加灵活性的同时,也增加了代码的复杂度。

为了提高代码的可读性和开发效率,可以采用这种定义成员的方式,而使用prototype对象来替代,这样function的定义就是类的构造函数,符合传统意义类的实现:类名和构造函数名是相同的。

例如:

cls.prototype,不仅代码体积变大,而且易读性还不够。为了进一步改进,可以使用无类型对象的构造方法来指定prototype对象,从而实现类的成员定义:

function cls(){
 //构造函数
}
//成员定义
cls.prototype.someProperty=”sample”;
cls.prototype.someMethod=function(){  //方法实现代码 }  

虽然上面的代码对于类的定义已经清晰了很多,但每定义一个属性或方法,都需要使用一次

cls,构造函数直接用类名来实现,而成员使用无类型对象来定义,以列表的方式实现了所有属性和方法,并且可以在定义的同时初始化属性的值。这也更象传统意义面向对象语言中类的实现。只是构造函数和类的成员定义被分为了两个部分,这可看成JavaScript中定义类的一种固定模式,这样在使用时会更加容易理解。   

//定义一个类cls
function cls(){  //构造函数 }
//通过指定prototype对象来实现类的成员定义
class1.prototype={  someProperty:”sample”, someMethod:function(){   //方法代码  },  
…//其他属性和方法.
}   

上面的代码用一种很清晰的方式定义了

注意:在一个类的成员之间互相引用,必须通过this指针来进行,例如在上面例子中的someMethod方法中,如果要使用属性someProperty,必须通过this.someProperty的形式,因为在JavaScript中每个属性和方法都是独立的,它们通过this指针联系在一个对象上。

Read: 881

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注