起风了

“路海长 青夜旷 越过群山追斜阳”

职责链模式

摘自《JavaScript设计模式与开发实践》 职责链模式的定义是:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 职责链模式的名字非常形象,一系列可能会处理请求的对象被连接成一条链,请求在这些对象之...

JS中的变量对象

函数参数传递的过程实际上就是实参像形参复制值的过程。 在向参数传递基本类型的值时,被传递(实参)的值会复制给一个局部变量(形参),形参值的变化不会对函数外的实参产生影响。 在向参数传递引用类型的值时,会把这个值在内存中的地址复制给形参。这时这个形参也指向了函数外的实参,因此这个形参的变化...

中介者模式

摘自《JavaScript设计模式与开发实践》 中介者模式的作用就是解除对象与对象之间的紧耦合关系。增加一个中介者对象后,所有的相关对象都通过中介者对象来通信,而不是互相引用,所以当一个对象发生改变时,只需要通知中介者对象即可。中介者使各对象之间耦合松散,而且可以独立地改变它们之间的交互。中介者中...

模板方法模式

摘自《JavaScript设计模式与开发实践》 模板方法模式是一种只需使用继承就可以实现的非常简单的模式。 模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。通常在抽象父类中封装了子类的算法框架,包括实现一些公共方法以及封装子类中所有方法的执行顺序。子类通过继承这个抽象类...

递归解析

递归解析 题目:一个数组var meta = [1,2,[3,4,[5]],6,[7,[8,9,[10,11,[12]]]]];,通过递归的方式依次取出这个数组中的数据。 最简单的方式是设定一个函数,传入这个数组,然后判断其中的值是否为数组。 如果为数组,那么继续调用当前的函数,将这个值传入。 如果不为数组,那么就将值return出来,或者push...

JavaScript Puzzlers!

44 个 JavaScript 变态题解析 第1题 ["1", "2", "3"].map(parseInt) map 接受两个参数,一个是回调函数 callback,一个是回调函数的 this 的值;其中回调函数接受三个参数 currentValue, index, arrary; parseInt 只接受两个两个参数 string, radix(基数); 可选。表示要解析的数字的基数。该值介于 2 ~ ...

前端知识海底捞之JS

AMD CMD CommonJS /* AMD是RequireJS对模块化的定义 * CMD是seaJS对模块化的定义 * CommonJS是Node对模块化的规范 **//* AMD 依赖关系前置 */define(['./a', './b'], function (a, b) { a.something(); b.something();})/* CMD 按需加载,依赖就近 */define(function (require, exports, module) { v...

小明买橙子

小明买橙子缩略图
小明去买橙子,水果店只能提供整袋购买,有每袋6个和每袋8个的包装(包装不能拆分)。可是小明只想购买恰好n个橙子,并且尽量少的袋数方便携带。如果不能购买恰好n个橙子,小明将不会购买。请根据此实现一个程序,要求如下: 输入一个整数n,表示小明想要买n(1<=n<=100)个橙子 输出一个整数表示最少需...

括号匹配方案

括号匹配方案缩略图
合法的括号匹配序列被定义为: 空串""是合法的括号序列; 如果"X"和"Y"是合法的序列,那么"XY"也是一个合法的括号序列; 如果"X"是一个合法的序列,那么"(X)"也是一个合法的括号序列; 每个合法的括号序列都可以由上面的规则生成; 例如"", "()", "()()()", "(()())", "(((())))"都是合法的。 东东现在有一个合...

JS中的二叉树遍历

JS中的二叉树遍历缩略图
栈、队列、链表等数据结构,都是顺序数据结构。而树是非顺序数据结构。树型结构是一类非常重要的非线性结构。直观地,树型结构是以分支关系定义的层次结构。 有且仅有一个特定的称为根(Root)的结点; 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,T3,...Tm,其中每一个集合本身又是一棵树...