设计模式
半颗茜
幸福来源于每天进步一点...
展开
-
1.2-JavaScript对象的多态性
多态背后的思想是将“做什么”和“谁去做以及怎样去做”分离开来,也就是将“不变的事物”与 “可能改变的事物”分离开来,归根结底先要消除类型之间的耦合关系。 动物都会叫,这是不变的,但是不同类型的动物具体怎么叫是可变的。把不变的部分隔离出来,把可变的部分封装起来,这给予了我们扩展程序的能力,程序看起来是可生长的,也是符合开放—封闭原则的。JavaScript 是一门不必进行类型检查的动态类型语言。静态类转载 2016-01-13 17:39:02 · 582 阅读 · 0 评论 -
4-单例模式
要实现一个标准的单例模式并不复杂,无非是用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象。一、标准单例模式//e.g.method1var Singleton = function(){ this.name = name; this.instance = null;};Singleton.prototype.getName转载 2016-02-18 15:03:31 · 381 阅读 · 0 评论 -
3.2-高阶函数
参考书籍: Javascript设计模式与开发实践(曾探)高阶函数是指至少满足下列条件之一的函数。 函数可以作为参数被传递; 函数可以作为返回值输出。一、函数作为参数传递把函数当作参数传递,这代表我们可以抽离出一部分容易变化的业务逻辑,把这部分业务逻辑放在函数参数中,这样一来可以分离业务代码中变化与不变的部分。其中一个重要应用场景就是常见的回调函数。1、回调函转载 2016-02-17 10:08:05 · 434 阅读 · 0 评论 -
1.4-原型
参考书籍: Javascript设计模式与开发实践(曾探)原型模式不单是一种设计模式,也被称为一种编程泛型。原型模式 找到一个对象,然后通过 克隆 来创建一个一模一样的对象。使用原型模式,我们只需要调用负责克隆的方法,便能完成同样的功能。ECMAScript 5 提供了Object.create方法,可以用来克隆对象。但原型模式的真正目的并非在于需要得到一个一模一样的对象,而是 提供了一种便捷的转载 2016-02-01 17:30:22 · 384 阅读 · 0 评论 -
2.2-call与apply
来源:JavaScript设计模式与开发实践Function.prototype.call 和Function.prototype.apply的作用一模一样,区别仅在于传入参数形式的不同。apply 接受两个参数,第一个是函数体内this 对象的指向,第二个参数为一个带下标的集合,这个集合可以为数组,也可以为类数组,apply 方法把这个集合中的元素作为参数传递给被调用的函数:var func =转载 2016-02-07 14:51:13 · 399 阅读 · 0 评论 -
2.1-this
JavaScript 的this总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境。不同情况下this的指向: 作为对象的方法调用。作为普通函数调用。构造器调用。Function.prototype.call 或Function.prototype.apply 调用。1、 作为对象的方法调用当函数作为对象的方法被调用时,this 指向该对象:转载 2016-02-01 20:14:33 · 333 阅读 · 0 评论 -
3.1-闭包
一、变量的作用域 变量的作用域,就是指变量的有效范围。当在函数中声明一个变量的时候,如果该变量前面没有带上关键字var,这个变量就会成为全局变量,这当然是一种容易造成命名冲突的做法。另外一种情况是用var 关键字在函数中声明变量,这时候的变量即是局部变量,只有在该函数内部才能访问到这个变量,在函数外面是访问不到的。在JavaScript 中,函数可以用来创造函数作用域。此时的函数像一层半透明的转载 2016-02-16 15:38:53 · 447 阅读 · 0 评论 -
1.3-封装
封装的 目的 是将信息隐藏。一般而言,我们讨论的封装是 封装数据 和 封装实现。更广义的封装,不仅包括封装数据和封装实现,还包括 封装类型 和 封装变化。在许多语言的对象系统中,封装数据是由语法解析来实现的,这些语言也许提供了private、public、protected 等关键字来提供不同的访问权限。但JavaScript 并没有提供对这些关键字的支持,我们只能依赖 变量的作用域 来实现封装特性转载 2016-01-14 11:00:28 · 417 阅读 · 0 评论 -
1.1-弱类型
编程语言按照数据类型大体可以分为两类,一类是 静态类型 语言,另一类是 动态类型 语言。静态类型语言在编译时便已确定变量的类型,而动态类型语言的变量类型要到程序运行的时候,待变量被赋予某个值之后,才会具有某种类型。静态类型语言的 优点 首先是在编译时就能发现类型不匹配的错误,编辑器可以帮助我们提前避免程序在运行期间有可能发生的一些错误。其次,如果在程序中明确地规定了数据类型,编译器还可以针对这些信息转载 2016-01-14 10:02:31 · 356 阅读 · 0 评论 -
5-策略模式
参考书籍: Javascript设计模式与开发实践(曾探)在程序设计中,要实现某一个功能有多种方案可以选择。比如一个压缩文件的程序,既可以选择zip 算法,也可以选择gzip 算法。这些算法灵活多样,而且可以随意互相替换。这种解决方案就是本章将要介绍的策略模式。策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。一、使用策略模式计算奖金很多公司的年终奖是根据员工的工资转载 2016-02-23 10:44:40 · 588 阅读 · 0 评论