javascript设计模式 ? 原型模式原理与应用实例分析


Posted in Javascript onApril 10, 2020

本文实例讲述了javascript设计模式 ? 原型模式原理与应用。分享给大家供大家参考,具体如下:

介绍:在日常的开发过程中,我们经常会利用到前端模板引擎来做页面渲染,因为存在很多页面结构相同,内容不同的场景。这种场景在js层面也会遇到,

很多组件存在相同或者类似,重复的创建会导致系统的消耗,这就要用到原型模式了。将相似内容提取出来作为原型类,创建具体类时需要对原型类进行复制然后扩展。

需要注意的是,复制出来的对象在进行修改时不会影响到原型类,二者相互独立。

定义:使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。原型模式是一种对象创建型模式。

场景:我们还是基于Dialog类来实现原型模式,我将所有弹窗共有的属性方法抽取出来,每次创建时通过复制其基础属性,在此基础上进行完善,然后返回新的对象。

示例:

var Dialog = function(){
 this.init = function(arg){
 this.element = arg.element;
 this.name = arg.name;
 }
 this.show = function(){
 console.log(this.name + ' is show -> ' + this.element);
 }
};
var createDialog = function(arg){
 var _dialog = function(){};
 _dialog.prototype = new Dialog();
 
 var resDia = new _dialog();
 resDia.init(arg);
 return resDia;
 
}
var notice = createDialog({name:'notice',element:'<div>notice</div>'});
var toast = createDialog({name:'toast',element:'<div>toast</div>'});
var warnin = createDialog({name:'warnin',element:'<div>warnin</div>'});
 
notice.show(); //notice is show -> <div>notice</div>
toast.show(); //toast is show -> <div>toast</div>
warnin.show(); //warnin is show -> <div>warnin</div>

原型模式总结:

优点:
* 当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率。
* 扩展性较好

缺点:
* 对已有类进行改造时需要修改源代码,违背了开关原则。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
键盘控制事件应用教程大全
Nov 24 Javascript
web 页面分页打印的实现
Jun 22 Javascript
jquery animate图片模向滑动示例代码
Jan 26 Javascript
JavaScript之引用类型介绍
Aug 10 Javascript
JQuery中操作Css样式的方法
Feb 12 Javascript
AngularJs中route的使用方法和配置
Feb 04 Javascript
让你一句话理解闭包(简单易懂)
Jun 03 Javascript
JS实现淡入淡出图片效果的方法分析
Dec 20 Javascript
微信小程序开发之IOS和Android兼容的问题
Sep 26 Javascript
JavaScript反射与依赖注入实例详解
May 29 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
May 30 Javascript
javascript实现数字时钟效果
Feb 06 Javascript
Quasar Input:type=&quot;number&quot; 去掉上下小箭头 实现加减按钮样式功能
Apr 09 #Javascript
vue中的过滤器及其时间格式化问题
Apr 09 #Javascript
微信小程序保存图片到相册权限设置
Apr 09 #Javascript
微信小程序仿通讯录功能
Apr 09 #Javascript
vue cli4下环境变量和模式示例详解
Apr 09 #Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
Apr 09 #Javascript
微信小程序吸底区域适配iPhoneX的实现
Apr 09 #Javascript
You might like
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
php一个找二层目录的小东东
2012/08/02 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
如何离线执行php任务
2017/02/21 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
经验几则 推荐
2006/09/05 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
Python写的贪吃蛇游戏例子
2014/06/16 Python
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
Python base64编码解码实例
2015/06/21 Python
Python 含参构造函数实例详解
2017/05/25 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
Tesserocr库的正确安装方式
2018/10/19 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
学校三八妇女节活动情况总结
2014/03/09 职场文书
安全生产月活动总结
2014/05/04 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js
bat批处理之字符串操作的实现
2022/03/16 Python