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 可以拖动的DIV(二)
Jun 26 Javascript
改变隐藏的input中value值的方法
Mar 19 Javascript
jquery图片切换插件
Mar 16 Javascript
JavaScript替换当前页面的方法
Apr 03 Javascript
jQuery插件pagewalkthrough实现引导页效果
Jul 05 Javascript
用jQuery向div中添加Html文本内容的简单实现
Jul 13 Javascript
JS访问DOM节点方法详解
Nov 29 Javascript
Vue+SpringBoot开发V部落博客管理平台
Dec 27 Javascript
小程序点赞收藏功能的实现代码示例
Sep 07 Javascript
vue 自动化路由实现代码
Sep 03 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
Feb 15 Javascript
如何区分vue中的v-show 与 v-if
Sep 08 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中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
python之wxPython菜单使用详解
2014/09/28 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
python斐波那契数列的计算方法
2018/09/27 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
在职研究生自我鉴定
2013/10/16 职场文书
初中三年学生的学习自我评价
2013/11/13 职场文书
优秀员工自荐书
2013/12/19 职场文书
应届毕业生个人求职自荐信
2014/01/06 职场文书
作息时间调整通知
2015/04/22 职场文书
花田少年史观后感
2015/06/16 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL