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 相关文章推荐
JavaScript解析URL参数示例代码
Aug 12 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
Apr 14 Javascript
详解JavaScript正则表达式之RegExp对象
Dec 13 Javascript
WEB前端实现裁剪上传图片功能
Oct 17 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
Jun 06 Javascript
jQuery实现获取选中复选框的值实例详解
Jun 28 jQuery
js实现简单选项卡功能
Mar 23 Javascript
React+Antd+Redux实现待办事件的方法
Mar 14 Javascript
JavaScript中AOP的实现与应用
May 06 Javascript
详解Vue前端生产环境发布配置实战篇
May 07 Javascript
微信小程序之 catalog 切换实现解析
Sep 12 Javascript
JS实现可以用键盘方向键控制的动画
Dec 11 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
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
document.compatMode介绍
2009/05/21 Javascript
JS 实现双色表格实现代码
2009/11/24 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
微信小程序开发背景图显示功能
2018/08/08 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
python动态网页批量爬取
2016/02/14 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
酒店采购员岗位职责
2014/03/14 职场文书
诉讼授权委托书
2014/10/15 职场文书
2015年班组长工作总结
2015/04/10 职场文书
电影地道战观后感
2015/06/04 职场文书
中秋节祝酒词
2015/08/12 职场文书
教师读书活动心得体会
2016/01/14 职场文书
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python