详解JavaScript中的构造器Constructor模式


Posted in Javascript onJanuary 14, 2016

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

详解JavaScript中的构造器Constructor模式

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

1、创建对象

新对象创建的两种方法

var newObject={};
var newObject=new object();//object 构造器的简洁记法

2、基本Constructor

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

function Car(model,year,miles){
this.model=model;
this.year=year;
this.miles=miles;
this.toString=function()
{
return this.model+"has done"+this.miles+"miles";
};
};
//用法
//可以创建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对象(访问相同的原型)

funcion() Ca(model,year,miles){
this.model=model;
this.year=year;
this.miles=miles;
//注意使用Object.prototype.newMethod 而不是Object.prototype是为了重新定义prototype对象
Car.prototype.toString=function(){
return this.model+"Has done" +this.miles+"miles";
};
};
//用法
var civic=new Car("Honda Civic",2009,20000);
var momdeo=new Car("Ford Mondeo",2010,5000);
console.log(civic.toString());
console.log(mondeo.toString());

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

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

class A {
public int Avar;
public A() {
System.out.println("AAA");
doSomething();
}
public void doSomething() {
Avar = 1111;
System.out.println("A.doSomething()");
}
}
public class B extends A {
public int Bvar = 2222;
public B() {
System.out.println("BBB");
doSomething();
System.out.println("Avar=" + Avar);
}
public void doSomething() {
System.out.println("Bvar=" + Bvar);
}
public static 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由于没有调用对象A的方法dosomething,所以其值为0,则输出0

全部输出就如下:

AAA
Bvar=0
BBB
Bvar=2222
Avar=0

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

Javascript 相关文章推荐
javascript+dom树型菜单类,希望朋友们一起进步
May 03 Javascript
用JS写的一个TableView控件代码
Jan 23 Javascript
简介JavaScript中Math.LOG10E属性的使用
Jun 14 Javascript
javascript弹出窗口实现代码
Nov 12 Javascript
javascript html5 canvas实现可拖动省份的中国地图
Mar 11 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
Apr 11 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
Jan 05 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
Oct 25 Javascript
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
使用Angular Cli如何创建Angular私有库详解
Jan 30 Javascript
JS前端模块化原理与实现方法详解
Mar 17 Javascript
原生JavaScript写出Tabs标签页的实例代码
Jul 20 Javascript
jquery+json实现动态商品内容展示的方法
Jan 14 #Javascript
jQuery遮罩层效果实例分析
Jan 14 #Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 #Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
Jan 14 #Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 #Javascript
jQuery div拖拽用法实例
Jan 14 #Javascript
javascript检测flash插件是否被禁用的方法
Jan 14 #Javascript
You might like
PHP扩展开发教程(总结)
2015/11/04 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
XENON基于JSON变种
2010/07/27 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
浅析return false的正确使用
2013/11/04 Javascript
JS表的模拟方法
2015/02/05 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
用Python中的字典来处理索引统计的方法
2015/05/05 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
PageFactory设计模式基于python实现
2020/04/14 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
python Xpath语法的使用
2020/11/26 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
入党转预备思想汇报
2014/01/07 职场文书
求职意向书范文
2014/04/01 职场文书
法人授权委托书格式
2014/04/08 职场文书
高效课堂标语
2014/06/26 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
安阳殷墟导游词
2015/02/10 职场文书