面试题:函数柯里化

2018-12-08
阅读 2 分钟
4.6k
题目 发现一道有意思的面试题:如何实现 add(1)(2)(3)=6 ? 首先简单分析一下,我们就能发现这是一个函数传值 return3次得到6 。 简单实现 {代码...} 利用闭包,执行add函数时return一个匿名函数,用于最终返回结果。 当然,这个方法有个明显缺陷,就是如果函数变成 add(1)(2)(3)(4) ,我们就又要手动嵌套一层。 分析 有...

函数防抖与函数节流

2018-06-09
阅读 2 分钟
2k
有一些浏览器事件我们不希望它很频繁的触发,如调整窗口大小(onresize)、监听滚动条滚动(onscroll),如果这些监听事件需要调用接口的话一秒内可能会调用上百次,这样坑定是有问题的。

vue源码学习:Object.defineProperty 对数组监听

2018-05-29
阅读 4 分钟
5.8k
可以看到,当a.b被设置为数组后,只要不是重新赋值一个新的数组对象,任何对数组内部的修改都不会触发setter方法的执行。这一点非常重要,因为基于Object.defineProperty()方法的现代前端框架实现的数据双向绑定也同样无法识别这样的数组变化。因此第一点,如果想要触发数据双向绑定,我们不要使用arr[1]=newValue;这样...

vue源码学习:Object.defineProperty 对象属性监听

2018-05-25
阅读 2 分钟
3.8k
参考版本 vue源码版本:0.11相关 vue实现双向数据绑定的关键是 Object.defineProperty ,让我们先来看下这个函数。 在MDN上查看有关 Object.defineProperty 的解释。 我们先从最简单的开始: {代码...} 这样,我们就能监听对象了!但问题并不仅仅这么简单。。。 我们可能会有对象中属性的值还是对象这种嵌套情况,可以通...