详解JavaScript中的构造器Constructor模式

前端之家收集整理的这篇文章主要介绍了详解JavaScript中的构造器Constructor模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

构造器模式简单描述(看图):

构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。构造器用于创建特定类型对象——准备好对象以备使用,同时接收构造器可以使用的参数,以在第一次创建对象时,设置成员属性方法的值

1、创建对象

对象创建的两种方法

2、基本Constructor

Javascript不支持类的情况下对象与Constructor,通过new关键字实例化一个对象,代码大概是这样的

用法 //可以创建car新实例 var civic=new Car("Hona Civic",2009,2000); var mondeo=new Car("Ford Mondeo",2010,5000); console.log(civic.toString()); console.log(mondeo.toString());

3、带原型的Constructor

JavaScript 有prototype属性。及调用JavaScript构造器创建一个对象后,新对象就会具有构造器原型的所有属性。同过这种方式,可以创建多个Car对象(访问相同的原型)

用法 var civic=new Car("Honda Civic",20000); var momdeo=new Car("Ford Mondeo",5000); console.log(civic.toString()); console.log(mondeo.toString());

现在toString()的单一实例就能够在所有Car对象之间共享了

下面给大家分享构造器constructor在实际项目中易错的题

生成B就得先生成A,所以调用A的构造器,输出AAA,然后调用方法dosomething,注意:A的该方法被B覆盖,而你生成的是B的对象,所以它调用B的方法,由于BVAR目前没有给定值,所以自动初始化为0;

然后生成B对象,先初始化变量BVAR,然后调用构造器输出BBB,然后调用方法,这时BVAR已初始化,所以输出BVAR=2222,而对象A中变量AVAR由于没有调用对象A的方法dosomething,所以其值为0,则输出0

全部输出就如下:

AAA Bvar=0 BBB Bvar=2222 Avar=0

注意:初始化顺序,当继承时,先生成超类对象,生成对象时,先生成静态变量,然后是一般变量,然后调用构造器!当所有超类对象生成后,生成本对象,顺序一样! 当方法被覆盖时,调用目前对象的方法!这得注意。

原文链接:https://www.f2er.com/js/50552.html

猜你在找的JavaScript相关文章