随笔分类 - Javascript
1
摘要:今天又被自己给蠢到,找了半天没发现问题。大家看下代码。 mutation-types.js 里我新增了一个类型。INIT_CURRENTORDER mutations.js里也增加了一个对应的事件 [INIT_CURRENTORDER](state) { let order = getStore('
阅读全文
摘要:实现一个函数,运算结果可以满足如下预期结果: add(1)(2) // 3add(1, 2, 3)(10) // 16 add(1)(2)(3)(4)(5) // 15 可以看到,这里其实有一种循环。只有最后一次调用才真正调用到 valueOf,而之前的操作都是合并参数,递归调用本身,由于最后一次调
阅读全文
摘要:下面的状态机选择通过Function.prototype.call方法直接把请求委托给某个字面量对象来执行。 下面利用delegate函数来重写一遍这个状态机 这是面向对象和闭包互换的一个例子。前者将变量保存为对象的属性,后者将变量封闭在闭包形成的环境中: Github上有另外一种方式: https
阅读全文
摘要:看before函数中,我们会发现他们共用一个arguments,当我们将beforefn函数体内改变arguments,原函数_self接收到的函数参数列表自然也会变化。 平时我们在实际开发当中会遇到http请求中带一个Token,但是有些页面又不用或者Token生成方式不一样。 请看下面代码:
阅读全文
摘要:在Javascript中动态的给对象添加职责的方式称作装饰者模式。 下面我们通常遇到的例子: 用装饰者模式,在不改原来函数的基础上,我们增加自己的新功能。 这种给对象动态增加职责的方式,并没有真正地改动对象自身,而是将对象放入另一个对象之中,这些对象以一条链的方式进行引用,形成一个聚合对象。 我们在
阅读全文
摘要:职责链模式的定义:使用多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链, 并沿着这条链条传递下去,直到有一个对象处理它为止。 通过职责链模式,我们可以灵活的添加,移除修改链中的节点顺序。 下面我们用AOP实现职责链
阅读全文
摘要:var objectPoolFactory = function (createObjFn) { var objectPool = []; return { create: function () { var obj = objectPool.length ==...
阅读全文
摘要:发布订阅模式又叫观察者模式,它定义一种一对多的依赖关系, 当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。 发布--订阅模式的通用实现 防止全局命名冲突再重构。
阅读全文
摘要:缓存代理可以为一些开销大的运算结果提供暂时的存储,在下次运算的时候,传进来的参数跟上次是一致, 则可以直接返回前面存储的结果。 运行上面的代码我们发现,当第二次再调用proxyMult(1,2,3)的时候,mult函数没有计算, 而是直接返回之前缓存好的计算结果。 当我们实际使用过程中,会有很多需要
阅读全文
摘要:单例模式是保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式在现在面向对象的语言Java,C#,C++等等中也有很多用到,其实它在Javascript中使用同样非常广泛。 我们继续抽离代码,使之更为通用 我们把生成单例的逻辑抽离出来,将函数作为一个变量参数进行传入,这样以后只需要新建对
阅读全文
摘要:在Javascript中没有提供原生的面向对象设计,但是可以通过使用闭包来实现一个完整的面向对象系统。 换成面向对象的写法就是
阅读全文
摘要:利用闭包我们可以完成很多工作,下面这个比较经典的应用。 点击不同的Div会弹出对应的下标 经过测试你会发现上面的代码随便点击哪个Div都弹出4。这是因为onclick事件是异步触发的,当事件被触发的时候,for循环已经结束,此时的变量 i 已经变为4. 解决办法就是用到闭包将循环的i值都封闭起来。如
阅读全文
摘要:ECMAScript 5中提供了Object.create()方法。 使用这个方法很容易克隆一个一模一样的对象。 当然有些比较旧的浏览器不支持ES5,可用下面代码替换:
阅读全文
摘要:在上一章http://www.cnblogs.com/meiyh/p/6207671.html 我有提到javascript很重要的this关键字,现在我们结合这个关键字使用的下面的两个关键字: call(对象,参数...) apply(对象,[参数]) 以上代码我们来改成call和apply写法:
阅读全文
摘要:多层函数调用取变量时,无论在哪里调用,要到创建此函数的作用域中取值,如果找不到再往上一级,直到全局变量。 外面定义了很多的全局的变量,下面我们来一个个理一下。 定义三个变量a,b,c;将A1函数赋值给变量f, f()执行。 f函数执行其实就是A1函数执行,我们来看A1函数里也定义了a,b,c三个变量
阅读全文
摘要:this 是谁调用的时候,指定的是谁,通俗一点讲就是,函数是谁执行是不是由其中一个对象点出来的那就是代表它, 比如执行对象a中b函数a.b();这个b函数中this代表a; 当换成var c=a.b; c(); 这样执行的话,b函数赋值给了一个变量c,这样直接执行c 函数的时候,this代表整个wi
阅读全文
摘要:看上面一段代码,当声明全局变量a后,在函数表达式中打出a,再声明同名的a变量,我们可以看到结果是: 说明当全局变量在函数表达式里再次声明之前,a默认赋值为undefined. 下面我们将函数表达式中的变量声明删除,看看结果: 所以,函数表达式、变量 声明他们的默认值都是undefined.
阅读全文
摘要:Javascript中Array数组的几个常用方法 pop() --获取数组中末尾的元素 shift() --获取数组中首位元素 push() --在数组中末尾增加元素 slice() --按照下标进行截取数据 sort()
阅读全文
摘要:Javascript中有个内置的arguments对象。 arguments对象包含了参数调用的参数数组。
阅读全文
1

浙公网安备 33010602011771号