js定义类的六种方式详解图片,js定义类的六种方式详解视频

js定义类的六种方式详解图片,js定义类的六种方式详解视频,JS定义类的六种方式详解

下面详细解释一下JS定义类的六种方式。我觉得边肖挺好的。现在分享给大家,给大家一个参考。让我们跟随边肖去看一看。祝大家游戏愉快。

在前端开发中,经常需要定义JS类。所以在JavaScript中,有几种方法来定义类。它们是什么?在本文中,定义JS类的六种方式解释如下(案例说明):

1、工厂方式

功能车(){

var ocar=新对象;

ocar.color=" blue

ocar . doors=4;

ocar.showColor=function(){

doc . write(this . color)

};

返回ocar

}

var Car 1=Car();

var Car 2=Car();

当这个函数被调用时,一个新的对象将被创建,它的所有属性和方法将被赋予它。使用此功能创建两个具有相同属性的对象。

当然,您可以通过向它传递参数来修改这种方式。

功能车(颜色、车门){

var ocar=新对象;

ocar.color=color

ocar.doors=door

ocar.showColor=function(){

doc . write(this . color)

};

返回ocar

}

var car1=Car("红色",4);

var car2=Car("蓝色",4);

car 1 . show color()//输出:"红色"

car 2 . show color()//输出:"蓝色"

现在,您可以通过向函数传递不同的参数来获得具有不同值的对象。

在前面的示例中,每次调用函数Car()时,都会创建showcolor(),这意味着每个对象都有自己的showcolor()方法。

但实际上,每个对象桶共享相同的功能。虽然可以在函数外部定义一个方法,然后将函数的属性指向该方法。

函数showColor(){

alert(this . color);

}

功能车(){

var ocar=new Object();

ocar.color=color

ocar.doors=door

ocar . show color=show color;

返回ocar

}

但是这看起来不像一个函数方法。

2、构造函数方式

函数构造方法和工厂方法一样简单,如下所示:

功能车(颜色、车门){

this.color=color

this.doors=door

this.showColor=function(){

警报(this.color)

};

}

var car1=新车("红色",4);

var car2=新车("蓝色",4);

可以看到构造函数方法并没有在函数内部创建对象,而是使用了这个关键字。因为在调用构造函数时已经创建了对象,所以只能用它来访问函数内部的对象属性。

现在使用new创建对象看起来就是这样!但这和工厂的方式是一样的。每个调用都为对象创建自己的方法。

3、原型方式

此方法利用对象的原型属性。首先,用一个空函数创建类名,然后给所有属性和方法赋予prototype属性。

功能车(){

}

car . prototype . color=" red ";

car . prototype . doors=4;

car . prototype . show color=function(){

alert(this . color);

}

var car1=新车();

var car2=新车();

在这段代码中,首先定义一个空函数,然后由prototype属性定义对象的属性。当这个函数被调用时,原型的所有属性将被赋予要立即创建的对象。这个函数的所有对象都存储指向showColor()的指针,从语法上看,它们属于同一个对象。

但是这个函数没有参数,所以不可能通过传递参数来初始化属性,属性的默认值只能在对象创建后更改。

prototype方法的一个严重问题是,当属性指向一个对象(如数组)时。

功能车(){

}

car . prototype . color=" red ";

car . prototype . doors=4;

Car.prototype.arr=new Array("a "," b ");

car . prototype . show color=function(){

alert(this . color);

}

var car1=新车();

var car2=新车();

car 1 . arr . push(" cc ");

alert(car 1 . arr);//输出:aa,bb,cc

alert(car 2 . arr);//输出:aa,bb,cc

因为这里数组的引用值,Car的两个对象都指向同一个数组,所以在car1中加上值后在car2中也可以看到。

它是一种像其他编程语言一样使用构造函数/原型创建对象的方法,是一种使用构造函数定义对象的非功能属性,用原型定义对象的方法。

功能车(颜色、车门){

this.color=color

this.doors=door

this.arr=新数组(" aa "," bb ");

}

Car.prototype.showColor(){

alert(this . color);

}

var car1=新车("红色",4);

var car2=新车("蓝色",4);

car 1 . arr . push(" cc ");

alert(car 1 . arr);//输出:aa,bb,cc

alert(car 2 . arr);//输出:aa,bb

5、动态原型方式

动态原型模式类似于混合构造器/原型模式的原理。唯一的区别是给予对象方法的位置。

功能车(颜色、车门){

this.color=color

this.doors=door

this.arr=新数组(" aa "," bb ");

如果(汽车类型。_initialized=="undefined"){

car . prototype . show color=function(){

alert(this . color);

};

汽车。_ initialized=true

}

}

动态原型是用一个标志来确定是否给了原型一个方法。这确保了该方法只创建一次。

6、混合工厂方式

它的目的是创建一个伪构造函数,只返回另一个对象的新实例。

功能车(){

var ocar=new Object();

ocar.color=" red

ocar . doors=4;

ocar.showColor=function(){

警报(this.color)

};

返回ocar

}

与工厂方法不同,此方法使用new运算符。

这些都是创建对象的方法。目前,最广泛使用的方法是混合构造器/原型方法。此外,动态原型法也很受欢迎。功能上等同于构造器/原型方法。

以上JS定义类的六种方式的详细讲解都是边肖分享的内容。希望能给大家一个参考,多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: