Javascript类定义方法的详细解决方案
1。工厂模式
复制代码代码如下所示:
函数汽车(){
无功控=新的对象;
ocar.color =蓝色;
ocar.doors = 4;
ocar.showcolor =函数(){
document.write(这个颜色)
};
返回控;
}
VaR CAR1 =车();
VaR的车=车();
当你调用这个函数时,你创建一个新的对象并赋予它所有的属性和方法。使用这个函数,你可以创建2个具有相同属性的对象。当然,我的姐姐可以通过将参数传递给它来改变它。
复制代码代码如下所示:
功能车(颜色,门){
无功控=新的对象;
ocar.color =颜色;
ocar.doors =门;
ocar.showcolor =函数(){
document.write(这个颜色)
};
返回控;
}
VaR CAR1 =车(红
VaR的车=车(蓝
car1.showcolor() / /输出:红
car2.showcolor() / /输出:蓝色
现在可以通过向函数传递不同的参数来获得具有不同值的对象。
在前面的例子中,每次调用函数的车()是创建显示颜色对话框(),这意味着每个对象都有它自己的显示颜色对话框()方法。
但实际上,每个对象都有相同的功能。
虽然方法可以在函数之外定义,但是方法是由函数的属性来指示的。
复制代码代码如下所示:
功能显示颜色对话框(){
警戒(这个颜色);
}
函数汽车(){
无功控=新的对象();
ocar.color =颜色;
ocar.doors =门;
ocar.showcolor =显示颜色对话框;
返回控;
}
但它看起来不像一个函数方法。
2、构造函数方法
构造函数与工厂方法一样简单,如下所示:
复制代码代码如下所示:
功能车(颜色,门){
this.color =颜色;
this.doors =门;
this.showcolor =函数(){
警戒(这个颜色)
};
}
VaR CAR1 =新车(红
VaR的车=新车(蓝
您可以看到构造函数不使用这个关键字在函数中创建对象,因为在调用构造函数时创建对象,而对象属性只能在函数中使用。
现在要创建具有新对象的对象,它看起来是这样的,但它与工厂的方法相同。
3、原型模式
该方法利用了对象的原型属性,首先用空函数创建类名,所有属性和方法都给出了原型属性。
复制代码代码如下所示:
函数汽车(){
}
car.prototype.color =红色;
car.prototype.doors = 4;
car.prototype.showcolor =函数(){
警戒(这个颜色);
}
VaR CAR1 =新车();
VaR的车=新车();
在这个代码中,首先定义一个空函数,对象的属性由原型属性定义,当调用函数时,原型的所有属性将立即分配给要创建的对象。该函数的所有对象都是指针显示颜色对话框()。它们在语法上都属于同一个对象。
但是,这个函数没有参数,不能通过传递参数初始化属性,并且在创建对象后必须更改属性的默认值。
原型设计的一个严重问题是当属性指向对象,比如数组。
复制代码代码如下所示:
函数汽车(){
}
car.prototype.color =红色;
car.prototype.doors = 4;
car.prototype.arr =新的数组(
car.prototype.showcolor =函数(){
警戒(这个颜色);
}
VaR CAR1 =新车();
VaR的车=新车();
car1.arr.push(CC);
警报(CAR1。ARR); / /输出:AA、BB、CC
警报(CAR2,ARR); / /输出:AA、BB、CC
由于阵列的参考价值,对同一系列的车点的两个对象,所以当值添加到CAR1,也是在车看到。
联合使用构造函数/原型来创建对象以及其他编程语言。它是一种通过构造函数定义对象非功能属性的原型定义对象的方法。
复制代码代码如下所示:
功能车(颜色,门){
this.color =颜色;
this.doors =门;
this.arr =新的阵列(AA
}
Car.prototype.showColor(){
警戒(这个颜色);
}
VaR CAR1 =新车(红
VaR的车=新车(蓝
car1.arr.push(CC);
警报(CAR1。ARR); / /输出:AA、BB、CC
警报(CAR2,ARR); / /输出:AA、BB
5。动态原型
动态原型类似于混合构造函数/原型方法,唯一的区别是给出对象方法的位置。
复制代码代码如下所示:
功能车(颜色,门){
this.color =颜色;
this.doors =门;
this.arr =新的阵列(AA
如果(typeof的车。_initialized = = undefined){
car.prototype.showcolor =函数(){
警戒(这个颜色);
};
_initialized =真车;
}
}
动态原型使用一个标志来确定原型是否被赋予了一个方法,这确保了该方法只创建一次。
6。混合工厂模式
它的目的地创建一个false构造函数,只返回另一个对象的新实例。
复制代码代码如下所示:
函数汽车(){
无功控=新的对象();
ocar.color =红色;
ocar.doors = 4;
ocar.showcolor =函数(){
警戒(这个颜色)
};
返回控;
}
与工厂方法不同,新操作符是用这种方式使用的。
以上是对象方法的所有发明,目前最广泛使用的是混合构造函数/原型模式。此外,动态原型技术也很流行,它的功能相当于构造函数/原型模式。
以上是本文的全部内容,希望大家能喜欢。