在JS中类或对象的定义说明
发布时间:2023-10-25 14:52:46 所属栏目:教程 来源:
导读:我们知道,JS是面向对象的。谈到面向对象,就不可避免的要涉及类的概念。一般像c#,java这些强类型语言都有固定的定义类的语法。而JS的不同之处在于它能使用各种方法实现自己的类和对象。一般的实现有以下几种方式:
我们知道,JS是面向对象的。谈到面向对象,就不可避免的要涉及类的概念。一般像c#,java这些强类型语言都有固定的定义类的语法。而JS的不同之处在于它能使用各种方法实现自己的类和对象。一般的实现有以下几种方式: 1.工厂方式 工厂方式是指创建一个返回特定对象类型的工厂函数,示例代码如下: 代码如下: function createCar(sColor,iDoors,iMpg) { var oTempCar=new Object; oTempCar.color=sColor; oTempCar.doors=iDoors; oTempCar.mpg=iMpg; oTempCar.showColor=function() { alert(this.color); } return oTempCar; } var oCar1=createCar("red",4,23); var oCar2=createCar("blue",3,25); oCar1.showColor(); oCar2.showColor(); 这种方式每次调用它的工厂函数,都会创建一个新对象。可问题在于每次生成一个新对象,都要创建新函数showColor,这使得每个对象都有自己的showColor版本,而事实上,所有的对象都共享同一个函数.为解决这个问题,开发者在工厂函数的外面定义了对象的方法,然后赋予对象一个指针指向这个这个函数,如下 代码如下: function showColor() { alert(this.color); } function createCar(sColor,iDoors,iMpg) { var oTempCar=new Object; oTempCar.color=sColor; oTempCar.doors=iDoors; oTempCar.mpg=iMpg; oTempCar.showColor=showColor; return oTempCar; } var oCar1=createCar("red",4,23); var oCar2=createCar("blue",3,25); oCar1.showColor(); oCar2.showColor(); 这样就不需要为每一个对象都创建自己的showColor函数,而只是创建指向这个函数的指针.这从功能上解决了问题,但是该函数却不像对象的方法。于是,引出了构造函数的方式。 2.构造函数方式 构造函数与工厂函数很相似,示例代码如下: 代码如下: function Car(sColor,iDoors,iMpg) { this.color=sColor; this.doors=iDoors; this.mpg=iMpg; this.showColor=function() { alert(this.color); } } var oCar1=new Car("red",4,23); var oCar2=new Car("blue",3,25); 在构造函数中,内部无创建对象,而是使用this关键字。使用new运算符调用构造函数时,在执行第一行代码之前先创建一个对象,只有用this才能访问这个对象。但是这会遇到什么问题呢,很显然,它的每个对象也都会创建自己的showColor函数版本。为解决这个问题,引出了以下的原型方式. 3.原型方式 该方式利用了对象的prototype属性,可把它看成创建新对象所依赖的原型。这里,用空构造函数来设置类名。然后把所有的方法和属性都直接赋予prototype属性。 (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐