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为搜索栏增加tag提示
Jun 22 Javascript
JavaScript 开发规范要求(图文并茂)
Jun 11 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
May 24 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
Jul 09 Javascript
Jquery常用的方法汇总
Sep 01 Javascript
学习JavaScript图片预加载模块
Nov 07 Javascript
详解jQuery lazyload 懒加载
Dec 19 Javascript
js中url对象化管理分析
Dec 29 Javascript
vue.js中proxyTable 转发请求的实现方法
Sep 20 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
layui-table获得当前行的上/下一行数据的例子
Sep 24 Javascript
微信小程序组件生命周期的踩坑记录
Mar 03 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下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
php 日期时间处理函数小结
2009/12/18 PHP
PHP中文乱码解决方案
2015/03/05 PHP
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
python绘制多个子图的实例
2019/07/07 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
密封类可以有虚函数吗
2014/08/11 面试题
大学生自我鉴定
2013/12/08 职场文书
高中体育教学反思
2014/01/24 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
Python echarts实现数据可视化实例详解
2022/03/03 Python