下面详细解释一下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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。