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 相关文章推荐
最新28个很棒的jQuery 教程
May 28 Javascript
JS window对象的top、parent、opener含义介绍
Dec 03 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
Mar 14 Javascript
jQuery源码分析之jQuery中的循环技巧详解
Sep 06 Javascript
jQuery中ajax的load()方法用法实例
Dec 26 Javascript
js实现左侧网页tab滑动门效果代码
Sep 06 Javascript
原生js实现图片轮播特效
Dec 18 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
Jun 07 Javascript
jQuery获取剪贴板内容的方法
Jun 16 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
Jun 25 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
Sep 04 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
Oct 29 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 download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
CI框架中数据库操作函数$this-&gt;db-&gt;where()相关用法总结
2016/05/17 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python中的句柄操作的方法示例
2019/06/20 Python
python实现猜拳游戏
2020/03/04 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
英国领先的游戏零售商:GAME
2019/09/24 全球购物
大四学生思想汇报
2014/01/13 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
优秀员工自荐书
2015/03/06 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
导游词之青城山景区
2019/09/27 职场文书