JavaScript中构造函数模式的详细说明
构造器模式简述(见图):
构造函数不能被继承,因此它不能重写重写,但是它可以通过重载来重载。构造函数用于创建特定类型的对象——,准备要使用的对象,并接收第一次创建对象时构造函数可以用来设置成员属性和方法的值的参数。
1.创建一个对象。
创建新对象的两种方法。
var NewObject={ };var new object=new object();//对象构造函数2的简洁表示法。基本构造函数。
当Javascript不支持类时,对象和构造函数通过新关键字实例化对象。代码是这样的。
功能汽车(车型、年份、英里数){ this.model=modelthis.year=年份;this.miles=milesthis . ToString=function(){ return this . model '已完成' this.miles ' miles};};//用法//可以创建一个新车实例var civic=new car ('hona civic ',2009,2000);var蒙迪欧=新车('福特蒙迪欧',2010,5000);console . log(civic . tostring());console . log(mondeo . tostring());3.带有原型的构造函数。
JavaScript有一个原型属性。并调用JavaScript构造函数创建一个对象,新对象将拥有构造函数原型的所有属性。这样,您可以创建多个Car对象(访问同一个原型)。
function()Ca(车型、年份、英里数){ this.model=modelthis.year=年份;this.miles=miles//注意用Object.prototype.newMethod代替Object.prototype重新定义原型对象car . prototype . tostring=function(){ return this . model ' hasdone ' this . miles ' miles ';};};//用法var思域=新车('本田思域',2009,20000);var momdeo=新车('福特蒙迪欧',2010,5000);console . log(civic . tostring());console . log(mondeo . tostring());现在,一个toString()的实例可以在所有Car对象之间共享。
下面和大家分享一下构造函数在实际项目中容易出错的问题。
A类{ public int Avarpublic A(){ system . out . println(' AAA ');doSomething();} public void doSomething(){ Avar=1111;system . out . println(' a . dosomesing()');} }公共B类扩展了A { public int Bvar=2222public B(){ system . out . println(' BBB ');doSomething();system . out . println(' Avar=' Avar ');} public void dosometing(){ system . out . println(' Bvar=' Bvar ');}公共静态void main(String[]args){ new B();}}顺序如下。如果第一个老师变成B,第一个老师变成A,那么调用A的构造函数,输出AAA,然后调用dosomething方法。注意:A的方法被B覆盖,但是你生成B的对象,所以调用B的方法,由于BVAR目前没有给定值,自动初始化为0;
然后生成B对象,先初始化变量BVAR,然后调用构造函数输出BBB,再调用方法。此时BVAR已经初始化,所以输出BVAR=2222。但是,对象A中的变量AVAR为0,因此其值为0。
所有输出如下:
AABvar=0BBBBvar=2222Avar=0
注意:初始化顺序:继承时老师变成超类对象,生成对象时老师变成静态变量,再变成通用变量,然后调用构造函数!生成所有超类对象时,成本对象的生成顺序是一样的!当方法被重写时,调用当前对象的方法!我们应该注意这一点。
版权声明:JavaScript中构造函数模式的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。