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使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
javascript学习笔记(八)正则表达式
Oct 08 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
Feb 28 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
Apr 18 Javascript
分分钟玩转Vue.js组件
Oct 25 Javascript
JS实现动画兼容性的transition和transform实例分析
Dec 13 Javascript
原生JS京东轮播图代码
Mar 22 Javascript
AngularJS封装$http.post()实例详解
May 06 Javascript
基于require.js的使用(实例讲解)
Sep 07 Javascript
JQuery事件委托原理与用法实例分析
May 13 jQuery
微信小程序全局变量GLOBALDATA的定义和调用过程解析
Sep 23 Javascript
vue解决跨域问题(推荐)
Nov 10 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
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
php中fsockopen用法实例
2015/01/05 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
浅谈python可视化包Bokeh
2018/02/07 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
品牌宣传方案
2014/03/21 职场文书
勤俭节约倡议书
2014/04/14 职场文书
ktv筹备计划书
2014/05/03 职场文书
单位授权委托书范文
2014/08/02 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
模范教师事迹材料
2014/12/16 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
PHP判断是否是json字符串
2021/04/01 PHP
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
MYSQL常用函数介绍
2022/05/05 MySQL