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 相关文章推荐
自动更新作用
Oct 08 Javascript
浅析Javascript中“==”与“===”的区别
Dec 23 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 Javascript
Vue.js上下滚动加载组件的实例代码
Jul 17 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
Jul 31 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
Mar 15 Javascript
ES6 let和const定义变量与常量的应用实例分析
Jun 27 Javascript
JavaScript对象原型链原理解析
Jan 22 Javascript
vue.js+element 默认提示中英文操作
Nov 11 Javascript
Vuex实现简单购物车
Jan 10 Vue.js
JavaScript选择器函数querySelector和querySelectorAll
Nov 27 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
第十四节--命名空间
2006/11/16 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
PHP 实现重载
2021/03/09 PHP
用jquery存取照片的具体实现方法
2013/06/30 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
玩转Koa之核心原理分析
2018/12/29 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
javascript如何实现create方法
2019/11/04 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
护士毕业实习感言
2014/03/05 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
导游个人求职信
2014/04/25 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
赢在中国观后感
2015/06/02 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
警用民用对讲机找不同
2022/02/18 无线电