Javascript类定义方法的详细解决方案

Javascript类定义方法的详细解决方案
用js定义类有很多种方法:

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 =函数(){

警戒(这个颜色)

};

返回控;

}
与工厂方法不同,新操作符是用这种方式使用的。
以上是对象方法的所有发明,目前最广泛使用的是混合构造函数/原型模式。此外,动态原型技术也很流行,它的功能相当于构造函数/原型模式。

以上是本文的全部内容,希望大家能喜欢。

tag:类定义解决方案方法详细电脑软件

相关内容