javascript设计模式-享元模式
摘要:享元模式采用一个共享来有效的支持大量细小粒度的对象,避免大量有相同内容的类的开销(如内存耗费),共享一个元类。应用场景:页面存在大量的资源密集型对象;他们具备一些共性,可以分离出公共操作的数据。一个例子,汽车登记: var Car = function(make,model,year,owne...
阅读全文
posted @
2015-01-26 19:04
清姿
阅读(230)
推荐(0) 编辑
javascript设计模式-装饰模式
摘要:装饰模式:在不改变原类(对象)和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象。在设计原则中,有一条,多用组合,少用继承,装饰模式正是这一原则的体现。UML示意图:假设自行车商店有4种自行车卖:var ABicycle = function(){ ... }...
阅读全文
posted @
2015-01-22 20:14
清姿
阅读(606)
推荐(1) 编辑
javascript设计模式-适配器模式
摘要:适配器模式的主要作用是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些对象(类)可以一起工作。UML示意图:例如,鸭子有fly方法和quack(嘎嘎叫)方法,火鸡也有fly方法和gobble(咯咯叫)方法,如果希望火鸡有quack方法,可以复用鸭子的,...
阅读全文
posted @
2015-01-22 19:20
清姿
阅读(545)
推荐(0) 编辑
javascript页面滚动图片加载
摘要:图片量越来越大,网页加载不堪重负。还是得用lazyload... 实现要点:页面绑定滚动事件;加载页面的时候把地址放于一个属性中;在滚动过程中判断元素是否进入显示的区域内;加载图片。 主要相关问题:浏览器兼容,如获取浏览器可见部分的宽度: window.innerHeight|| document...
阅读全文
posted @
2015-01-20 20:06
清姿
阅读(350)
推荐(0) 编辑
javascript设计模式-外观模式
摘要:也可译为门面模式。它为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。引入外观角色之后,使用者只需要直接与外观角色交互,使用者与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。 比如在家要看电影,需要打开音响,再打开投影...
阅读全文
posted @
2015-01-20 19:06
清姿
阅读(1943)
推荐(1) 编辑
javascript创建对象的相关问题
摘要:javascript创建对象的方法有很多种,一般来说,推荐使用对象字面量来创建对象。对象构造函数捕捉使用new Object来创建对象,可能会带来一些问题:var o = new Object();console.log(o.constructor === Object);//truevar o =...
阅读全文
posted @
2015-01-19 19:51
清姿
阅读(172)
推荐(0) 编辑
javascript设计模式-组合模式
摘要:组合模式所要解决的问题:可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象。客户端代码必须区别对象简单对象和容器对象,而实际上大多数情况下用户认为它们是一样的。对这些类区别使用,使得程序更加复杂。递归使用的时候跟...
阅读全文
posted @
2015-01-19 19:09
清姿
阅读(318)
推荐(0) 编辑
前端中的MVC
摘要:MVC是一种设计模式,它将应用划分为3个部分:数据(模型)、展现层(视图)和用户交互(控制器)。其中:M - MODEL(模型)V - VIEW(视图)C - CONTROLLER(控制器)一个事件的发生是这样的过程: 1. 用户和应用产生交互。 2. 控制器的事件处理器被触发。 3. 控制器...
阅读全文
posted @
2015-01-17 15:57
清姿
阅读(1052)
推荐(0) 编辑
Javascript中的Bind 、Call和Apply
摘要:看以下代码: var bind = Function.prototype.call.bind(Function.prototype.bind); 第一眼看上去,我能猜出它究竟是用来做什么的。它把x.y(z)转化成了y(x,z)。编写良好的代码会比较容易被读懂。在读完Functional Javasc...
阅读全文
posted @
2015-01-16 13:36
清姿
阅读(231)
推荐(0) 编辑
javascript-如何判断一个对象为数组
摘要:Q:如何判断一个对象是否为数组?A1:判断对象的constructor是否指向Array, 接着判断对应的特殊属性,如length,splice之类.这个很容易冒充。A2:使用instanceof判断对象是否为数组的实例。一般情况下可行,在某些极端情况下,会出错。例如,有个A页面定义了一个数组a,页...
阅读全文
posted @
2015-01-15 19:44
清姿
阅读(3073)
推荐(1) 编辑
javascript设计模式-桥接模式
摘要:在系统中,某些类由于自身逻辑,具有两个或两个以上维度的变化,如何使得该类型可以沿多个方向变化,但又不引入额外的复杂度,这就是桥接模式要解决的问题。 定义:桥接模式(Bridge),将抽象部分与它的实现部分分离,使他们可以独立的变化。 意图:将抽象与实现解耦。 对于前端,比较常用的场景,是事件监控:...
阅读全文
posted @
2015-01-15 19:11
清姿
阅读(386)
推荐(0) 编辑
javascript设计模式-工厂模式
摘要:简单工厂模式:使用一个类来生成实例。复杂工厂模式:使用子类来决定一个成员变量应该是哪个具体的类的实例。简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口。通过工厂,可以取得需要的实例。逻辑示意图:下面列举了一个例子:var Coffee = function(){...
阅读全文
posted @
2015-01-13 19:54
清姿
阅读(165)
推荐(0) 编辑
javascript设计模式-单例模式
摘要:在C#中,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,会提供一个静态方法,通过该静态方法可以取得唯一实例。这就确保了一个类只有一个实例对象:public class Singleton{ private static Sing...
阅读全文
posted @
2015-01-12 19:41
清姿
阅读(305)
推荐(0) 编辑
阅读jQuery源码的18个惊喜
摘要:注释:本文使用$.fn.method指代调用一系列选中的元素的方法。例如,$.fn.addClass,指代$('div').addClass(‘blue’)或 $('a.active’).addClass(‘in-use’)这些用法。$.fn指代jQuery对象。1.Sizzle’s weight:...
阅读全文
posted @
2015-01-08 20:09
清姿
阅读(218)
推荐(1) 编辑
javascript常用函数
摘要:不使用全局变量返回1 2 3 数组去除重复项 去重也可以用数组的indexOf方法来实现: 利用查表法也可以实现去重: replace相关:
阅读全文
js跨域解决方法
摘要:跨域问题常常会遇到。做了一下整理。仅用于主域相同,子域不同的跨域(iframe+设置document.domain)这种情况需要主域相同,即使用同一协议同一端口,且主域相同(例如aa.cnblogs.com和bb.cnblogs.com).这时可以使用iframe实现跨域,需要将document.d...
阅读全文
posted @
2014-12-22 19:31
清姿
阅读(207)
推荐(0) 编辑
下雪了-js下雪效果
摘要:Jingle Bells,Jingle Bells,圣诞来临,做了一个下雪的小程序玩。有大雪花和小雪花。效果图:转眼又是年末了,又要跨年了。希望新的一年所有愿望可以实现,加油。
阅读全文
posted @
2014-12-18 20:10
清姿
阅读(400)
推荐(0) 编辑
Seajs笔记
摘要:SeaJS 是一个适用于 Web 浏览器端的模块加载器。使用 SeaJS,可以更好地组织 JavaScript 代码。 在 SeaJS 的世界里,一个文件就是一个模块。所有模块都遵循 CMD 规范,可以像在 Node 环境中一样来书写模块代码:define(function(require, ex...
阅读全文
posted @
2014-12-16 20:04
清姿
阅读(197)
推荐(0) 编辑
Nodejs笔记(二)
摘要:Nodejs事件 Node.js 所有的异步I/O 操作在完成时都会发送一个事件到事件队列。 Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。 所有这些产生事件的对象都是 ev...
阅读全文
posted @
2014-12-16 19:38
清姿
阅读(357)
推荐(0) 编辑
Nodejs笔记(一)
摘要:Node近些日子大火,看样子js大有统一前端后台的趋势... Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度快,性能好。创建HTTP服务器 在项目的根目录下创建一个叫 server.js 的文件,并写入以下代码:...
阅读全文
posted @
2014-12-15 20:04
清姿
阅读(1145)
推荐(1) 编辑