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 相关文章推荐
js页面跳转常用的几种方式
Nov 25 Javascript
jQuery 常见操作实现方式和常用函数方法总结
May 06 Javascript
javascript将浮点数转换成整数的三个方法
Jun 23 Javascript
Javascript定义类(class)的三种方法详解
Mar 13 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
jQuery实现定位滚动条位置
Aug 05 Javascript
纯JS实现可拖拽表单的简单实例
Sep 02 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
Oct 08 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
js仿微信公众平台打标签功能
Apr 08 Javascript
vue之debounce属性被移除及处理详解
Nov 13 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
Aug 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数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
php数组删除元素示例
2014/03/21 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
Python最基本的输入输出详解
2015/04/25 Python
python中嵌套函数的实操步骤
2019/02/27 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
如何完美的建立一个python项目
2020/10/09 Python
html5唤醒APP小记
2019/03/27 HTML / CSS
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
一套带网友答案的.NET笔试题
2016/12/06 面试题
大一军训感言
2014/01/09 职场文书
党员学习十八大感想
2014/01/17 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
团代会邀请函
2015/02/02 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android