随笔分类 -  javascript理论

1
摘要:0.前言 老实讲,看设计模式真得很痛苦,一则阅读过的代码太少;二则从来或者从没意识到使用过这些东西。所以我采用了看书(《js设计模式》)和阅读博客(大叔、alloyteam、聂微东)相结合的办法,勉勉强强写了这么多随笔,当然写随便不是为了炫耀,而是对知识进行总结,以便加深理解。1.职责链模式是什么? 有一个请求,多个对象都可以处理该请求,但是到底哪个对象要处理该请求在开发期是不确定的,也就是说请求的发送者和接受者是一种动态的关系。所以需要将这些对象链成一条链,并沿着这条链传递该请求,... 阅读全文
posted @ 2013-07-04 11:00 沙漠孤鹰1140 阅读(432) 评论(0) 推荐(0) 编辑
摘要:0.前言 早上好,早晨的时光总是美好的,坐在空调屋里,看着外边的蓝天白云,不停地敲击着键盘,多么美好地享受,也许屌丝就是如此容易满足。1.什么是命令模式? 用于将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;可以对请求排队或记录请求日志以及执行可撤销的操作。也就是说该模式旨在将函数的调用、请求和操作封装成一个单一的对象,然后对这个对象进行一系列的处理。此外,可以降低调用对象和接受对象之间的耦合,提高了模块化程度。2.使用条件 ... 阅读全文
posted @ 2013-07-04 09:43 沙漠孤鹰1140 阅读(765) 评论(0) 推荐(0) 编辑
摘要:0.前言 最近好多烦心事,由于自己的拖延懒惰造成事情堆积如山,看来最近得勤快些了,不然真的会死的很惨。1.观察者模式是什么 又叫做发布者订阅者模式(publish/Subscribe),用来确定对象之间的一种一对多的依赖,让多个订阅者同时监听某一个发布者对象,当这个发布者对象的状态发生变化时就通知所有的订阅者,使他们能够自动更新自己。2.代码举例 老实说自己还是没有完全吃透观察者模式,所以无法自助写出对应的代码,假如有幸您独到的文章,就移步到大叔处或alloyteam处吧,这个随笔就用来加深我的理解吧。 var pubsub = {};(function (q) { var topic... 阅读全文
posted @ 2013-07-03 21:06 沙漠孤鹰1140 阅读(428) 评论(0) 推荐(0) 编辑
摘要:0.前言 KG、PP被交易到了布鲁克林篮网,我的心情很复杂,一方面为他们不能终老celtics感到惋惜,另一方面为他们能够再次冲击总冠军感到高兴。从07年以来,作为一个铁杆celtics球迷,他们给我带来很多喜怒哀乐,也记载我的青春,不过这一切都会成为历史。1.代理模式是什么 1.1、代理(proxy)是一个对象,它可以用来控制对另外一个对象的访问; 1.2、代理对象和本体对象实现了同样的接口,并且会把任何方法调用传递给本体对象;2、应用 2.1、远程代理 代理可以代理本体对象被实... 阅读全文
posted @ 2013-07-03 12:09 沙漠孤鹰1140 阅读(3604) 评论(1) 推荐(1) 编辑
摘要:0.前言 今天总结了四种设计模式,到现在有点精疲力尽了,但是还是有不少收获,很开心自己有掌握了新的东西,今天变得有了价值。1.使用条件 1.1、网页中使用了大量资源密集型的对象; 1.2、这些对象中所保存的数据至少有一部分能被转化为外在数据; 1.3、外在数据分离出去以后,独一无二的对象的数目较少。2. 实现步骤 2.1、将所有外在数据从目标类分离,形成共享对象; 2.2、创建一个用来控制共享类实例化的工场; 2.3、创建一个用来保存外在数据的管理器。3.享元模式的... 阅读全文
posted @ 2013-07-02 21:55 沙漠孤鹰1140 阅读(905) 评论(0) 推荐(0) 编辑
摘要:0.前言 下午做事效率很低,无精打采的,整个脑子就跟浆糊一样,看看时间一点点流去,心中只能无可奈何,哎,码农的激情难道就这么容易熄灭吗?1.该模式的使用情况 假如我们想给对象增加功能,但是又不想修改原有对象,也不想或不便通过继承来实现,那么装饰者模式来帮你解决难题。2.与组合模式的异同 相同:都要与所包装的对象实现统一的接口,并且会把任何方法调用传递给这些对象。 不同:组合模式是把众多子对象组织成为一个整体,形成层次的树形结构;而装饰者模式用于在... 阅读全文
posted @ 2013-07-02 16:52 沙漠孤鹰1140 阅读(220) 评论(0) 推荐(0) 编辑
摘要:0.前言 脖子又开始痛了,难道还没成为码农就开始出现颈椎问题,一直以来举得自己不算那种死宅的人,怎么这么年轻就出现这种问题。哎,不管了,还是先把自己学习的适配器模式写出来,算是一种总结吧。1.为什么存在该模式 在项目的实际开发过程中,期待的接口与现有的接口之间存在不兼容问题,但是又不规模修改代码,为了达到兼容性,就需要使用这种模式。通过这种接口使得原来由于接口不兼容而不能一起工作的那些类可以一起工作,也就是用一个新的的接口包装另外一个对象。 与门面模式的区别:都是对别的对象进行包装并改... 阅读全文
posted @ 2013-07-02 11:07 沙漠孤鹰1140 阅读(260) 评论(0) 推荐(0) 编辑
摘要:0.前言 早上好,今天天气不错,估计有35度吧,坐在空调室里相当惬意,那么酒足饭饱之后就应该干些正事了。1. 为什么使用外观模式 外观模式提供了一个高层接口,封装一些复杂操作或繁琐行为,方便调用。门面模式第一可以简化类的接口,第二可以消除类与使用它的客户代码之间的耦合。其实就是为了图方便,在很多js库中都使用了该模式,主要用于兼容多浏览器。2. 具体说明 var addEvent = function(ele... 阅读全文
posted @ 2013-07-02 09:26 沙漠孤鹰1140 阅读(217) 评论(0) 推荐(0) 编辑
摘要:0.前言 今天是建党节,新疆那边又开始了闹腾。作为立志成为码农的我,现在已经从一个大愤青淡化为一个小愤青,对这些国家民生大事不在血气喷发,转而把经历发泄在技术问题上面,因而在扯一篇随笔吧,把无处发泄的精力挥洒出去。1.组合模式的使用条件 主要用于解决WEB上的动态用户界面,使用这种模式,可以用一条命令在多个对象上激发复杂的或递归的行为。组合模式擅长对大批量对象进行操作。 换句话,组合模式的使用范围: 1、存在一批相似或相近的大量对象,而具体结构在开发初期无法知道具体结构;2.希... 阅读全文
posted @ 2013-07-01 21:55 沙漠孤鹰1140 阅读(354) 评论(2) 推荐(0) 编辑
摘要:0.前言 看设计模式比较痛苦,一则是自己经验尚浅,不能体会到使用这些设计模式的益处;二则是不能很好把握使用这些设计模式的时机。所以这一部分看得断断续续,拖拖拉拉,为了了却这快心病,决定最近一口气看完几种常见的设计模式。今天就从桥接模式开始吧。1.使用情况 最常用于事件监控上,也通过桥接联接多个类 1.1、事件监控 //错误的方式 //这个API根据事件监听器回调函数的工作机制,事件对象被作为参数传递给这个函数。本例中并没有使用这... 阅读全文
posted @ 2013-07-01 15:09 沙漠孤鹰1140 阅读(2836) 评论(4) 推荐(0) 编辑
摘要:0.前言看了一个下午的工场模式,晚上就总结一下,也算是一种成果吧。1.工场模式的定义 工场模式分为简单工场模式和复杂工场模式,为了动态创建对象。2.分类 2.1简单工场模式 简单工场模式是通过定义一个方法,根据参数(或条件)的不同来创建相应的对象。 View CodeView Code 1 var XHR = { 2 createXHR:function(){ 3 var methods = [ 4 function(){return new XMLHttpRequest();}, 5 function(){return... 阅读全文
posted @ 2013-04-20 19:41 沙漠孤鹰1140 阅读(339) 评论(0) 推荐(0) 编辑
摘要:介绍单例模式的特点以及使用 阅读全文
posted @ 2013-04-19 17:05 沙漠孤鹰1140 阅读(484) 评论(2) 推荐(0) 编辑
摘要:没想到javascript还可以模拟接口,顿时觉得js更加强大,所以把《javascript设计模式》的内容摘录出来,供大家学习,内容稍有改动.1.在javascript中引入接口的好处: 接口具有自我描述性,可以促进代码的重用;有利于不同的类之间进行通信,在大型项目中尤其有用;有利于代码的测试和调试。2.引入接口的弊端 接口的引入强化了类型的作用,降低了语言的灵活性;带来额外的开销;无法强迫其他程序员遵守你定义的接口。3.模仿接口的方法 方法1:用注释描述 View Code 1 /* 2 interface composite{ 3 function add(child)... 阅读全文
posted @ 2013-04-18 15:10 沙漠孤鹰1140 阅读(997) 评论(2) 推荐(0) 编辑
摘要:1.在创建XMLHttpRequest对象时存在兼容 var xhr;if(window.XMLHttpRequest){ xhr = new XMLHttpRequest();}else if(window.ActiveXObject){ xhr = new ActiveXObject('Microsoft.XMLHTTP');}2.事件对象event的创建和属性存在差异 IE中,event事件作为window对象的一个属性;而FF则作为参数传递给函数。 同时IE阻止冒泡、阻止默认行为、事件源对象分别为: e.cancelBubble = true ,returnValue 阅读全文
posted @ 2013-03-27 09:42 沙漠孤鹰1140 阅读(212) 评论(0) 推荐(0) 编辑
摘要:一、this的使用情况1.在html的事件属性中使用this 例如:<input type="button" id="button2" value="button222" onclick="javascript:alert(this.id);" />2.在事件处理函数中使用this例如:button2.onclick = function(){ alert(this.name); }3.如果在全局函数中使用,则this为window对象例如:alert(this == window); //true4. 阅读全文
posted @ 2012-12-06 16:10 沙漠孤鹰1140 阅读(150) 评论(0) 推荐(0) 编辑
摘要:1.任何在函数中定义的变量,都可以认为是私有变量,因此不能在函数外部访问这些私有变量。2.如果在函数内部创建闭包,那么闭包通过自己的作用域链就可以访问这些变量。3.定义特权方法可以访问私有变量,定义特权方法有两种方式:一是在构造函数中定义特权方法;二是通过原型模式来实现特权方法。参考文献:http://www.cnblogs.com/darren_code/archive/2011/08/31/javascripdesignpatterns.html《javascript 高级程序设计》第七章186-192 阅读全文
posted @ 2012-12-05 21:34 沙漠孤鹰1140 阅读(116) 评论(0) 推荐(0) 编辑
摘要:1.事件流描述的是从页面接收事件的顺序。2.IE的事件流叫做事件冒泡,即事件开始时由最具体的元素来接收事件,然后逐级向上传播到较为不具体的节点;3.Netscape团队提出的另外一种事件流叫做事件捕获。事件捕获的思想是不太具体节点最先接收事件,然后具体的节点应该最后接收到事件。4.DOM2级事件规定事件流包括三个阶段:事件捕获阶段、出于目标阶段、事件冒泡阶段。首先发生的是事件捕获,为截获事件提供了机会,然后是实际的目标接收到事件。 最后是冒泡阶段,可以对这个阶段的事件作出响应。5.取消事件冒泡:原因---只希望事件发生在目标元素而不是父元素上。方法:添加取消事件冒泡的方法;6.不是所有的事件都 阅读全文
posted @ 2012-12-05 09:41 沙漠孤鹰1140 阅读(126) 评论(0) 推荐(0) 编辑
摘要:定义:有权访问另外一个函数作用域中的变量的函数。创建闭包的方式:就是在函数内部创建另外一个函数。实质:内部函数的作用域包含了外部函数的作用域,作用域链本质上是一个指向变量对象的指针列表,它只是引用但不实际包含变量对象。闭包的使用情况:1.保护函数内的变量安全。外部函数的变量只能被闭包函数访问;(也就是读取函数内部的变量)2.在内存中维持一个变量。该变量不会被垃圾回收机制回收。闭包的副作用:1.闭包与变量:闭包只能取得包含函数中任何变量的最后一个值。解决闭包的方法:创建匿名函数,并立即执行该匿名函数,并把结果返回。例如:http://www.cnblogs.com/Darren_code/arc 阅读全文
posted @ 2012-12-04 13:59 沙漠孤鹰1140 阅读(200) 评论(0) 推荐(0) 编辑
摘要:1.全局变量:全局变量都是window的属性var a = 1;其实是把变量的声明和变量的赋值结合在一起,而变量的声明会提前进行声明,赋值会在程序执行的时候才会进行。3.变量声明和函数声明函数声明会覆盖掉变量的声明,而不能覆盖变量的赋值,案例:var a = 1, b = function a(x) { x && a(--x); };alert(a);输出结果为 1;而假如:var a;function a(x) { x && a(--x); };alert(a);则输出结果为:function a(x) { x && a(--x);... 阅读全文
posted @ 2012-12-03 21:54 沙漠孤鹰1140 阅读(141) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2012-11-05 15:18 沙漠孤鹰1140 阅读(27) 评论(0) 推荐(0) 编辑

1