第1章 面向对象的JavaScript 1.1 动态类型语言和鸭子类型 2 1.2 多态 4 1.3 封装 12 1.4 原型模式和基于原型继承的JavaScript对象系统 14 ··· (更多) "JavaScript设计模式与开发实践"试读· ··· 如果时间倒退一点,很难想象我这样的“懒人”会花上近一年的业余时间来完成这本书。 这本书的原型是我发表在...
模板方法模式是基于继承的一种设计模式,父类封装了子类的算法框架和方法的执行顺序,子类继承父类之后,父类通知子类执行这些方法,好莱坞原则很好地诠释了这种设计技巧,即高层组件调用底层组件。模板方法模式是为数不多的基于继承的设计模式,但 JavaScript 语言实际上没有提供真正的类式继承,继承是通过对象与对象之间...
第一部分讲解 JavaScript 面向对象和函数式编程方面的知识,主要包括静态类型语言和动态类型语言的区别及其在实现设计模式时的异同,以及封装、继承、多态在动态类型语言中的体现,此外还介绍了 JavaScript 基于原型继承的面向对象系统的来龙去脉,给学习设计模式做好铺垫。第二部分是核心部分,通过从普通到更好的代码示例...
发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。在 JavaScript 开发中,一般用事件模型来替代传统的发布—订阅模式。全局订阅与通信 发布—订阅模式可以用一个全局的 Event 对象来实现,订阅者不需要了解消息来自哪个发布者,发布者...
在 JavaScript 版本的设计模式中,策略模式和命令模式等都可以用回调函数轻松实现。设计模式中的开放-封闭原则 好设计通常都经得起开放-封闭原则的考验。不管是具体的各种设计模式,还是更抽象的面向对象设计原则,比如单一职责原则、最少知识原则、依赖倒置原则等,都是为了让程序遵守开放-封闭原则而出现的。可以这样说,...
在JavaScript 开发中,我们一般用事件模型 来替代传统的发布—订阅模式。 // 发布-订阅模式简单实现 var Event = (function(){ var clientList = {}, listen, trigger, remove; listen = function( key, fn ){ if ( !clientList[ key ] ){ clientList[ key ] = []; } clientList[ key ].push( fn...
JavaScript设计模式与开发实践——JavaScript的多态 “多态”一词源于希腊文polymorphism,拆开来看是poly(复数)+ morph(形态)+ ism,从字面上我们可以理解为复数形态。 多态的实际含义是:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果。换句话说,给不同的对象发送同一个消息的时候,这些对象会根据...
《Javascript设计模式与开发实践》--读书笔记 第2章 this call apply bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被bind的第一个参数指定,其余的参数将作为新函数的参数供调用时使用。 bind()方法底层实现 Function.prototype.bind=Function.prototype.bind||function() {varself =thisvarrest...
Javascript设计模式与开发实践读书笔记(1-3章) 第一章 面向对象的Javascript 1.1 多态在面向对象设计中的应用 多态最根本好处在于,你不必询问对象“你是什么类型”而后根据得到的答案调用对象的某个行为--你只管调用行为就好,剩下的一切多态会搞定 换句话说就是:多态的最根本作用就是把过程化的条件分支语句转化为...