加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

在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属性。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章