摘要:
该函数只有几行代码,却使用了很多javascript的高级特性。首先,该函数反编译了传入的函数,并使用正则表达式,将这些参数从逗号分隔的参数列表中抽取出来。
阅读全文
posted @ 2017-04-12 15:48
codeing-or-artist-??
阅读(252)
推荐(0)
摘要:
代码求值一共有4种方式: 一、eval()函数求值 该方法将执行传入代码的字符串 在调用eval()方法的作用域内进行代码求值 应该指出的是,任何不是简单变量、原始值、赋值语句的内容都需要在外面包装一个括号,以便返回正确结果。 比如用eval创建一个对象: 另外,用eval()创建函数,如果在IE8
阅读全文
posted @ 2017-04-12 11:58
codeing-or-artist-??
阅读(230)
推荐(0)
posted @ 2017-04-12 11:34
codeing-or-artist-??
阅读(186)
推荐(0)
摘要:
利用闭包特性改写addEventListener的回调函数
阅读全文
posted @ 2017-04-01 10:46
codeing-or-artist-??
阅读(1574)
推荐(0)
摘要:
函数包装是一个的用来封装函数功能的技巧。 如果想要继承或者创建一个新的函数的时候,通过函数包装可直接实现。最有价值的一个场景是:在我们想要重写(override)一些已经存在的函数的情况下, 并且可以保持在原始函数中那些有用的部分可以在被包装后仍然有效。 另外一个普遍的场景是:兼容不同的浏览器。 例
阅读全文
posted @ 2017-04-01 10:17
codeing-or-artist-??
阅读(478)
推荐(0)
摘要:
所谓memoization,即让一个函数具备一种可以记忆它历史被调用时候产生的运算结果的能力。 首先创建一个叫做memoized()的方法,实现了记住一个已经存在的函数的返回值。 在这个例子中我们并没有用到闭包 在上面这个例子中,结果都被缓存在了_values中。 有趣的一点是,计算和存储是在一个s
阅读全文
posted @ 2017-04-01 10:06
codeing-or-artist-??
阅读(315)
推荐(0)
摘要:
科里化定义如下: 首先将一批函数转入一个函数(然后这个函数返回一个新的函数),这中形式就叫“做科里化”(currying) 上面这个例子看懂了吗? curry这个函数做的事情,是将函数中的this和arguments缓存在了闭包之中。 当split函数调用curry的时候,curry中的this就是
阅读全文
posted @ 2017-03-31 20:39
codeing-or-artist-??
阅读(355)
推荐(0)
摘要:
js创建一个构造函数,会默认在原型链上添加一个constructor的属性,它保存了构造函数内的代码。 一般情况下我们不需要去改动它,但是有些时候我们会不经意的改写它。 比如下面这个例子: 原型链是赋值操作而不是添加属性,所以把默认的constructor属性覆盖掉了,我们可以这样解决: 或者: 还
阅读全文
posted @ 2017-03-31 17:19
codeing-or-artist-??
阅读(134)
推荐(0)
摘要:
js原型链继承有很多种实现的方式,主要介绍以下3种: 一、拷贝继承: 顾名思义拷贝就是利用for in 或者jq的extend,把一个构造函数的prototype循环遍历赋值给另一个构造函数的prototype,再把构造函数内的属性也一起继承过去 二、类式继承: 三、原型继承: 利用es5新特性Ob
阅读全文
posted @ 2017-03-31 11:05
codeing-or-artist-??
阅读(207)
推荐(0)
摘要:
观察者模式(Publish/Subscribe),定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能自动更新自己。 C#观察者模式: 在.NET中,我们可以使用委托与事件来简化观察者模式的实现,上面的例子用事件和委托的实现
阅读全文
posted @ 2017-03-29 16:34
codeing-or-artist-??
阅读(166)
推荐(0)