摘要: 装饰者模式的主要功能就是动态的将责任附加到对象上,而由于javascript的动态特性,为javascript函数添加新的职责将变得非常容易一、概念装饰者提供比继承更有弹性的替代方案。 装饰者用于包装同接口的对象,不仅允许你向方法添加行为,而且还可以将方法设置成原始对象调用(例如装饰者的构造函数)。装饰者通过重载方法的形式添加新功能,该模式可以在被装饰者前面或者后面加上自己的行为以达到特定的目的。二、实例 1 function Beverage() 2 { 3 this.description="Unknown Beverage"; 4 this.cost=function 阅读全文
posted @ 2014-01-13 16:45 锋叔子 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 一、语法(js手册)call 方法调用一个对象的一个方法,以另一个对象替换当前对象。call([thisObj[,arg1[, arg2[, [,.argN]]]]])参数thisObj可选项。将被用作当前对象的对象。arg1, arg2,, argN可选项。将被传递方法参数序列。说明call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。应用某一对象的一个方法,用另一个对象替换当前对象。apply([thisObj[,arg 阅读全文
posted @ 2014-01-13 10:26 锋叔子 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 一、定义策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算饭的客户.二、正文相信大家在web开发的时候都接触过jquery验证插件jquery.validate.js, 接下来我们通过此插件的源码和用法来展开讨论策略模式的用法。jquery.validate.js在线源码网址:http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.js1、纵观整个源码我们可以发现验证插件主要通过jquery的exten和fn来给jquery扩展对象从而达到验证表单的目的(functio 阅读全文
posted @ 2014-01-10 18:43 锋叔子 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 一、定义策略模式(Strategy)属于对象行为型设计模式,主要是定义一系列的算法,把这些算法一个个封装成拥有共同接口的单独的类,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。这里的算法不要狭义的理解为数据结构中算法,可以理解为不同的业务处理方法。这种做法会带来什么样的好处呢?它将算法的使用和算法本身分离,即将变化的具体算法封装了起来,降低了代码的耦合度,系统业务策略的更变仅需少量修改。算法被提取出来,这样可以使算法得到重用,这种情况还可以考虑使用享元模式来共享算法对象,来减少系统开销(但要注意使用享元模式的建议条件)。二、结构先由定义来想象下它的结构吧: 阅读全文
posted @ 2014-01-09 16:51 锋叔子 阅读(214) 评论(0) 推荐(0) 编辑
摘要: this是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。 阅读全文
posted @ 2014-01-08 14:43 锋叔子 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 一、相关概念1、动态程序设计语言(Dynamic Programming Language ) Dynamic Programming Language (动态语言或动态编程语言) 动态语言,准确地说,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。2、 动态类型语言和静态类型语言 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言... 阅读全文
posted @ 2014-01-08 11:18 锋叔子 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 1 console.log("锋叔子的选择排序"); 2 //选择排序 3 function selectSort(myArray) 4 { 5 var k = 0; 6 var tmp = 0; 7 //每次循环找出最大的值 8 for(var i = 0; i < myArray.length - 1; i++) { 9 k = i;10 //找出最大值11 for(var j = i; j < myArray.length; j++) {12 if(myArray[j] < myAr... 阅读全文
posted @ 2014-01-06 14:52 锋叔子 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 1 console.log("锋叔子的插入排序 "); 2 //插入排序实现 3 function insertSort(myArray) 4 { 5 for (var i = 1,n=myArray.length; i = 0 && myArray[j] > temp; j--) {12 myArray[j + 1] = myArray[j]; 13 }14 myArray[j + 1] = temp; 15 }16 };17 return myArray;18 }1... 阅读全文
posted @ 2013-12-31 14:18 锋叔子 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 1 console.log("锋叔子的插入排序 "); 2 //插入排序实现 3 function insertSort(myArray) 4 { 5 for (var i = 1,n=myArray.length; i = 0 && myArray[j] > temp; j--) {12 myArray[j + 1] = myArray[j]; 13 }14 myArray[j + 1] = temp; 15 }16 };17 return myArray;18 }1... 阅读全文
posted @ 2013-12-31 13:58 锋叔子 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 1 //快速排序 2 function quickSort(myArray,left,right) 3 { 4 5 if (left = x) // 从右向左找第一个小于x的数 12 j--; 13 if(i < j) 14 myArray[i++] = myArray[j]; 15 16 while(i < j && myArray[i] < x) // 从左向右找第一个大于等于x的数 17 ... 阅读全文
posted @ 2013-12-31 13:06 锋叔子 阅读(195) 评论(0) 推荐(0) 编辑