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 相关文章推荐
对textarea框的代码调试,而且功能上使用非常方便,酷
Jun 30 Javascript
javascript 特性检测并非浏览器检测
Jan 15 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
Jun 24 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
Sep 23 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
Feb 21 Javascript
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
JScript实现表格的简单操作
Aug 15 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
Mar 14 Javascript
vue2.x 对象劫持的原理实现
Apr 19 Javascript
VueX模块的具体使用(小白教程)
Jun 05 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
Dec 09 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图像处理类代码分享
2012/01/19 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
layer弹出层全屏及关闭方法
2018/08/17 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
十佳大学生事迹材料
2014/01/29 职场文书
运动会稿件200字
2014/02/07 职场文书
四年大学自我鉴定
2014/02/17 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
信仰纪录片观后感
2015/06/08 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP