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 相关文章推荐
学习YUI.Ext 第七天--关于View&amp;JSONView
Mar 10 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
May 27 Javascript
JavaScript插件化开发教程(五)
Feb 01 Javascript
jquery读取xml文件实现省市县三级联动的方法
May 29 Javascript
js强制把网址设为默认首页
Sep 29 Javascript
jquery网页日历显示控件calendar3.1使用详解
Nov 24 Javascript
微信小程序 下拉列表的实现实例代码
Mar 08 Javascript
Vue.js图片预览插件使用详解
Aug 27 Javascript
vue-cli项目修改文件热重载失效的解决方法
Sep 19 Javascript
vue + el-form 实现的多层循环表单验证
Nov 25 Vue.js
如何使用gpu.js改善JavaScript的性能
Dec 01 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
Dec 16 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
js图片预加载示例
2014/04/30 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
python从入门到精通(DAY 3)
2015/12/20 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
python使用列表的最佳方案
2020/08/12 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
规划编制实施方案
2014/03/15 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
忠诚与背叛观后感
2015/06/04 职场文书
教师节座谈会主持词
2015/07/03 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
Apache自带的ab压力测试工具的实现
2022/07/23 Servers