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 相关文章推荐
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
Jun 14 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
Apr 17 Javascript
jquery实现倒计时代码分享
Jun 13 Javascript
Javascript中的五种数据类型详解
Dec 26 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
Jul 29 Javascript
Js 获取当前函数参数对象的实现代码
Jun 20 Javascript
微信小程序分页加载的实例代码
Jul 11 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
Aug 16 Javascript
layer.open关闭父窗口 以及调用父页面的方法
Aug 17 Javascript
JS实现多功能计算器
Oct 28 Javascript
详解Typescript里的This的使用方法
Jan 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与C#分别格式化文件大小的代码
2011/05/14 PHP
php使用websocket示例详解
2014/03/12 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
Javascript之文件操作
2007/03/07 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
Python六大开源框架对比
2015/10/19 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
简单分析python的类变量、实例变量
2019/08/23 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
网络研修随笔感言
2014/02/17 职场文书
质量月活动总结
2014/08/26 职场文书
创新社会管理心得体会
2014/09/12 职场文书
2015新年寄语大全
2014/12/08 职场文书
入党现实表现材料
2014/12/23 职场文书
安全先进个人材料
2014/12/29 职场文书
情人节活动总结范文
2015/02/05 职场文书
房贷工资证明范本
2015/06/12 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis