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 多行滚动代码(附详细解释)
Jun 17 Javascript
js禁止小键盘输入数字功能代码
Aug 01 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
jQuery常见开发技巧详细整理
Jan 02 Javascript
js网页中的(运行代码)功能实现思路
Feb 04 Javascript
简单js代码实现selece二级联动(推荐)
Feb 18 Javascript
教你在heroku云平台上部署Node.js应用
Jul 30 Javascript
bootstrap网格系统使用方法解析
Jan 13 Javascript
vue中使用ueditor富文本编辑器
Feb 08 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
Aug 13 Javascript
vue2.0获取鼠标位置的方法
Sep 13 Javascript
JavaScript封闭函数及常用内置对象示例
May 13 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
php5 and xml示例
2006/11/22 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
JavaScript中的Window窗口对象
2008/01/16 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
javascript关于继承解析
2016/05/10 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
js数组的基本使用总结
2021/01/18 Javascript
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python SQLite3简介
2018/02/22 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
Python中turtle库的使用实例
2019/09/09 Python
python模块常用用法实例详解
2019/10/17 Python
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
初中美术教学反思
2014/01/29 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
大学生党性分析材料
2014/12/19 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫