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 相关文章推荐
IE6下通过a标签点击切换图片的问题
Nov 14 Javascript
Javascript基础教程之数据类型转换
Jan 18 Javascript
JavaScript 节流函数 Throttle 详解
Jul 04 Javascript
JS生成和下载二维码的代码
Dec 07 Javascript
整理关于Bootstrap表单的慕课笔记
Mar 29 Javascript
jQuery滚动插件scrollable.js用法分析
May 25 jQuery
微信小程序多列选择器range-key使用详解
Mar 30 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
Jan 30 Javascript
JavaScript中字符串的常用操作方法及特殊字符
Mar 18 Javascript
vue-cli开发环境实现跨域请求的方法
Apr 07 Javascript
JavaScript中set与get方法用法示例
Aug 15 Javascript
jquery实现轮播图特效
Apr 12 jQuery
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/10/09 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
php提取微信账单的有效信息
2018/10/01 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
Python单元测试框架unittest简明使用实例
2015/04/13 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
python实现梯度法 python最速下降法
2020/03/24 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
python判断变量是否为列表的方法
2020/09/17 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
大学生职业生涯规划书模板
2014/01/03 职场文书
优秀党员获奖感言
2014/02/18 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
垂直极限观后感
2015/06/08 职场文书
名人传读书笔记
2015/06/26 职场文书
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
Flask response响应的具体使用
2021/07/15 Python