摘自《JavaScript设计模式与开发实践》
职责链模式的定义是:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
职责链模式的名字非常形象,一系列可能会处理请求的对象被连接成一条链,请求在这些对象之...
函数参数传递的过程实际上就是实参像形参复制值的过程。
在向参数传递基本类型的值时,被传递(实参)的值会复制给一个局部变量(形参),形参值的变化不会对函数外的实参产生影响。
在向参数传递引用类型的值时,会把这个值在内存中的地址复制给形参。这时这个形参也指向了函数外的实参,因此这个形参的变化...
摘自《JavaScript设计模式与开发实践》
中介者模式的作用就是解除对象与对象之间的紧耦合关系。增加一个中介者对象后,所有的相关对象都通过中介者对象来通信,而不是互相引用,所以当一个对象发生改变时,只需要通知中介者对象即可。中介者使各对象之间耦合松散,而且可以独立地改变它们之间的交互。中介者中...
摘自《JavaScript设计模式与开发实践》
模板方法模式是一种只需使用继承就可以实现的非常简单的模式。
模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。通常在抽象父类中封装了子类的算法框架,包括实现一些公共方法以及封装子类中所有方法的执行顺序。子类通过继承这个抽象类...
递归解析
题目:一个数组var meta = [1,2,[3,4,[5]],6,[7,[8,9,[10,11,[12]]]]];,通过递归的方式依次取出这个数组中的数据。
最简单的方式是设定一个函数,传入这个数组,然后判断其中的值是否为数组。
如果为数组,那么继续调用当前的函数,将这个值传入。
如果不为数组,那么就将值return出来,或者push...
44 个 JavaScript 变态题解析
第1题
["1", "2", "3"].map(parseInt)
map 接受两个参数,一个是回调函数 callback,一个是回调函数的 this 的值;其中回调函数接受三个参数 currentValue, index, arrary;
parseInt 只接受两个两个参数 string, radix(基数);
可选。表示要解析的数字的基数。该值介于 2 ~ ...
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)"也是一个合法的括号序列;
每个合法的括号序列都可以由上面的规则生成;
例如"", "()", "()()()", "(()())", "(((())))"都是合法的。 东东现在有一个合...
栈、队列、链表等数据结构,都是顺序数据结构。而树是非顺序数据结构。树型结构是一类非常重要的非线性结构。直观地,树型结构是以分支关系定义的层次结构。
有且仅有一个特定的称为根(Root)的结点;
当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,T3,...Tm,其中每一个集合本身又是一棵树...