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 相关文章推荐
网页常用特效代码整理
Jun 23 Javascript
javascript数组组合成字符串的脚本
Jan 06 Javascript
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
Nov 04 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
Dec 03 Javascript
JS 实现图片直接下载示例代码
Jul 22 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
Jun 12 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
微信小程序基于本地缓存实现点赞功能的方法
Dec 18 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
Jan 22 jQuery
微信小程序实现图片上传功能
May 28 Javascript
学习React中ref的两个demo示例
Aug 14 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
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
python的常见命令注入威胁
2013/02/18 Python
python的继承知识点总结
2018/12/10 Python
对python 自定义协议的方法详解
2019/02/13 Python
python调用外部程序的实操步骤
2019/03/04 Python
python SVM 线性分类模型的实现
2019/07/19 Python
python利用7z批量解压rar的实现
2019/08/07 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
电气工程自动化求职信
2014/03/14 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
活动总结报告格式
2014/05/09 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
单位委托书
2014/10/15 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
Python打包为exe详细教程
2021/05/18 Python
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电