随笔分类 - js
摘要:1. JS 中不存在块级作用域,也就是说在全局作用域下 if ,for 语句中用 var 声明的变量是全局变量。
2. JS 中浮点数运算的值为近似值,比如:0.1 + 0.2 不等于 0.3 ,所以避免使用浮点数来进行比较。
3. NaN != NaN ,NaN == undefined ,NaN...
阅读全文
摘要:状态模式是一种非同寻常的优秀模式,它也许是解决某些需求场景的最好方法。虽然状态模式并不是一种简单到一目了然的模式(它往往还会带来代码量的增加),但你一旦明白了状态模式的精髓,以后一定会感谢它带给你的无与伦比的好处。 状态模式的关键是区分事物内部的状态,事物内部的状态往往会带来事物的行为改变。 ...
阅读全文
摘要:在程序开发中,许多时候都并不希望某个类天生就非常庞大,一次性包含许多职责。那么我们就可以使用装饰者模式。装饰者模式可以动态地给某个对象添加一些额外的职责,而不会影响这个类中派生的其他对象。 在传统面向对象语言中,给对象添加功能常常使用继承的方式,但是继承的方式并不灵活,还会带来许多问题:一方面会...
阅读全文
摘要:在我们的生活的世界中,每个人每个物体之间都会产生一些错综复杂的联系。在应用程序里也是一样,程序由大大小小的单一对象组成,所有这些对象都按照某种关系和规则来通信。 平时我们大概能记住 10 个朋友的电话,30 家餐馆的位置(打比方)。在程序里,也许一个对象会和其他 10 个对象打交道,所以它会保持 1...
阅读全文
摘要:职责链模式的定义是:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。 职责链模式的名字非常形象,一系列可能会处理请求的对象被连接成一条链,请求在这些对象之间依次传递,直到遇到一个可以处理它的对象,我们...
阅读全文
摘要:亨元(flyweight)模式是一种用于性能优化的模式, “fly” 在这里是苍蝇的意思,以为蝇量级。亨元模式的可行是运用共享技术来有效支持大量细粒度的对象。 如果系统中因为创建了大量类似的对象而导致内存占用过高,亨元模式就非常有用了。在 JavaScrip t中,浏览器特别是移动端的浏览器分配的内...
阅读全文
摘要:在JavaScript开发中用到集成的场景其实并不是很多,衡多时候我们都喜欢用mix in(混入)的方式给对象扩展属性。但这不代表继承在JavaScript里没有用武之地,虽然没有真正的类和继承机制,但我们可以通过原型prototype来变相地实现继承。 不过本章并非要讨论继承,而是讨论一种基于...
阅读全文
摘要:1. 回顾宏命令我们在 "命令模式" 中讲解过宏命令的结构和作用。宏命令对象包含了一组具体的子命令对象,不管是宏命令对象,还是子命令对象,都有一个execute方法负责执行命令。现在回顾一下这段安装在万能遥控器上的宏命令代码。 var closeDoorCommand = { execute: f...
阅读全文
摘要:命令模式 假设有一个快餐店,而我是该快餐店的点餐服务员,那么我一天的工作应该是这样的:当某位客人点餐或者打来订餐电话后,我会把他的需求都写在清单上,然后交给厨房,客人不用关心的是哪些厨师帮他炒菜。我们餐厅还可以满足客人需要的定时服务,比如客人可能当前正在回家的路上,要求一个小时后才开始炒他的菜,...
阅读全文
摘要:观察者模式 观察者模式广泛应用于客户端JavaScript编程中。所有的浏览器事件(鼠标悬停,按键等事件)是该模式的例子。它的另一个名字也称 自定义事件 ,与那些由浏览器触发的相比,自定义事件表示是由你编程实现的事件。此外,该模式的另一个别名是 订阅——发布模式 。 设计这种模式背后的主要动...
阅读全文
摘要:迭代器模式 迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也可以按顺序访问其中的每个元素。 现在流行的大部分语言如Java,Ruby等都已经有了内置的...
阅读全文
摘要:代理模式 当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问,客户实际上访问的是替身对象。替身对象对请求做出一些处理之后,再把请求转交给本体对象。 1. 小明送书 小明送书给大明,先看看不用代理模式如何实现 var Shu = function () {...
阅读全文
摘要:策略模式 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 以年终奖为例,效绩为S,工资翻4倍,为A,翻3倍,为B,翻2倍。 1. 最初的实现 我们可以编写一个名为calculateBonus的函数来计算每个人的奖金,它接受两个参数:工资和效绩。代码如下: ...
阅读全文
摘要:单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 要实现一个标准的单例模式并不复杂,无非是用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象。 1. 使用静态方法实现 var Singleton = function (n...
阅读全文
浙公网安备 33010602011771号