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插件hiAlert实现网页对话框美化
May 03 Javascript
跟我学习javascript的循环
Nov 18 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
Mar 06 Javascript
jquery拼接ajax 的json和字符串拼接的方法
Mar 11 Javascript
JavaScript变量作用域_动力节点Java学院整理
Jun 27 Javascript
Vue使用vue-cli创建项目
Sep 01 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
Aug 22 Javascript
vue-cli 构建骨架屏的方法示例
Nov 08 Javascript
js实现掷骰子小游戏
Oct 24 Javascript
如何正确理解vue中的key详解
Nov 02 Javascript
js中forEach,for in,for of循环的用法示例小结
Mar 14 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
PHP+DBM的同学录程序(4)
2006/10/09 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
PHP制作万年历
2015/01/07 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
use jscript List Installed Software
2007/06/11 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
对javascript继承的理解
2016/10/11 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
python re模块的高级用法详解
2018/06/06 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
西部世纪.net笔试题面试题
2014/04/03 面试题
2014社区三八妇女节活动总结
2014/03/01 职场文书
大学生团日活动总结
2015/05/06 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
如何利用golang运用mysql数据库
2022/03/13 Golang
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python