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效率 一次判断,而不要次次判断
Mar 30 Javascript
jquery1.9 下检测浏览器类型和版本的方法
Dec 26 Javascript
javascript实现tab切换特效
Nov 12 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
Dec 16 Javascript
Ionic3 UI组件之autocomplete详解
Jun 08 Javascript
简单实现js拖拽效果
Jul 25 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
基于vue组件实现猜数字游戏
May 28 Javascript
React Native使用百度Echarts显示图表的示例代码
Nov 07 Javascript
JS使用贪心算法解决找零问题示例
Nov 27 Javascript
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 jQuery
vue+elementui 对话框取消 表单验证重置示例
Oct 29 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
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
javascript 鼠标拖动图标技术
2010/02/07 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
Angular动态添加、删除输入框并计算值实例代码
2017/03/29 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python实现截屏的函数
2015/07/26 Python
Python正则简单实例分析
2017/03/21 Python
python读写csv文件实例代码
2019/07/05 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
什么是唯一索引
2015/07/05 面试题
质检员岗位职责
2013/12/17 职场文书
调查研究项目计划书
2014/04/29 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
机关作风建设整改方案
2014/10/27 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
python munch库的使用解析
2021/05/25 Python