JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析


Posted in Javascript onJuly 26, 2018

本文实例讲述了JavaScript设计模式之构造器模式(生成器模式)定义与用法。分享给大家供大家参考,具体如下:

工厂模式虽然解决了重复实例化的问题,但无法识别对象类型。

可以采用构造函数(构造方法)可用来创建特定的对象,可以解决工厂模式无法识别对象实例的问题。也就是说,使用构造函数的方法 ,即解决了重复实例化的问题 ,又解决了对象识别的问题。

构造器模式与工厂模式的不同之处在于:

① 构造函数方法没有显示的创建对象 (new Object())

② 直接将属性和方法赋值给 this 对象;

③ 没有 return 语句。

构造函数方法的规范:

① 函数名和实例化构造名相同且大写 (非强制,但有助于区分构造函数和普通函数);

② 通过构造函数创建对象,必须使用new运算符。

function Person(name, age) {
  this.name = name;
    this.age = age;
  this.showName = function() {
      alert(this.name);
    };
}
var person1 = new Person("Alice", 23);
var person2 = new Person("Bruce", 22);

构造器模式的问题:每个方法都要在每个实例上重新创建一遍。

原因:JavaScript中的函数是对象,每定义一个函数,就是实例化了一个Funtion对象,因此,使用构造函数创建的每个实例都有一个同名的方法,但这些方法不是同一个Function的实例,因为不同实例上的同名函数是不相等的。

解决:原型模式,请见://3water.com/article/144485.htm

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
使用jQuery动态加载js脚本文件的方法
Apr 03 Javascript
jquery插件推荐浏览器嗅探userAgent
Nov 09 Javascript
js控制页面的全屏展示和退出全屏显示的方法
Mar 10 Javascript
JS HTML5拖拽上传图片预览
Jul 18 Javascript
详解AngularJS controller调用factory
May 19 Javascript
jquery网页加载进度条的实现
Jun 01 jQuery
jquery实现回车键触发事件(实例讲解)
Nov 21 jQuery
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 jQuery
JavaScript对象的特性与实践应用深入详解
Dec 30 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 Javascript
JS封装cavans多种滤镜组件
Feb 15 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 #Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
Jul 26 #Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 #Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 #Javascript
基于Vue实现微信小程序的图文编辑器
Jul 25 #Javascript
详解ECMAScript typeof用法
Jul 25 #Javascript
微信小程序动态生成二维码的实现代码
Jul 25 #Javascript
You might like
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
PHP7新特性简述
2017/06/11 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
Vue中组件之间数据的传递的示例代码
2017/09/08 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
python 读取文件并替换字段的实例
2018/07/12 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
flask实现验证码并验证功能
2019/12/05 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
家长给老师的道歉信
2014/01/13 职场文书
中学生家长评语大全
2014/04/16 职场文书
班训口号大全
2014/06/18 职场文书
5.12护士节活动总结
2015/02/10 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书