开发人员通常想知道他们是否应该在工作中使用一种“理想”的模式或模式集。这个问题没有明确的唯一的答案,我们研究的每个脚本和Web应用程序可能都有它自己的个性化需求,我们需要思考模式的哪些方面能够为实现提供实际价值。
一旦我们牢牢掌握了设计模式和它们最为相配的具体问题,那么将它们继承到我们的应用程序架构中就会变得更加容易。
本文关于JavaScript设计模式1,探讨两种设计模式:
Constructor(构造器)模式;
Module(模块)模式;
Constructor(构造器)模式:
1.基本Constructor(构造器)
缺点:一个问题是使继承变得困难,另一个问题是,toString()这样的函数是为每个使用Car构造器创建的新对象而分别重新定义的,这不是最理想的,因为这种函数应该在所有的Car类型实例之间共享。
2.带原型的Constructor(构造器)
现在toString()的单一实例就能够在所有Car对象之间共享。
Module(模块)模式:
在JavaScript中,有几种用于实现模块的方法,包括:
对象字面量表示法
Module模式
ADM模块
CommonJs模块
ECMAScript Harmony模块
本次主要探索Module模式,Module模式在某种程度上是基于对象字面量,因此先介绍对象字面量。
1.对象字面量
使用对象字面量表示法定义的模块:
2.Module(模块)模式
Module模式使用闭包封装“私有”状态和组织。它提供了一种包装混合公有/私有方法和变量的方式,防止其泄露至全局作用域,并与别的开发人员的接口发生冲突。通过该模式,只需返回一个公有API,而其他的一切则都维持在私有闭包里。
包含命名空间、公有和私有变量的Module模式:
ITDogFire –ttsy