冴羽
冴羽
写的很不错呦~ 我也来补充一个 PureComponent 的原理示意: ```js import {createElement, Component, render} from 'rax'; import { is } from 'immutable'; const keys = Object.keys; const shallowEqualImmutable = (context, nextProps, nextState) => { const...
@liangzr ```js this.setState({ data1: this.state.data1.set("key", "value"), data2: this.state.data2.set("key", "value") }) ``` 我们使用 Immutable 保证的是 this.state.data1 和 this.state.data2 在发生更改的时候,一定是一个新的对象,后面这个判断就是遍历比较 data1 和 data2 是否发生变化
@liangzr 额,我突然发现我以前好像回答的不对题…… 我们这里的判断是 ```js let isUpdate = nextStateKeys.some((item) => ( currentState[item] !== nextState[item] && !is(currentState[item], nextState[item]) )); ``` 有的情况下,确实有可能虽然 currentState[item] 和 nextState[item] 的值相同,但是引用不同,比如我们多次从服务器获取数据后,然后直接 ```js this.setState({ data: Immutable.fromJS(res) }) ``` 有可能服务器数据没有发生变化,但是因为重新...
好巧,我们今天的文章同时讲到了call和apply的模拟实现
不过现在的bind的模拟实现其实是有个小问题的,我专门私信了颜海镜求证了这个问题。
并不是哦,如果你比较MDN英文版和中文版的实现,就会发现这个问题。先卖个关子,明天发布的文章讲解bind的模拟实现就会讲到这个问题。(๑•̀ㅂ•́)و✧
仔细看了你的这篇文章,嗯,觉得……哈哈,建议楼主在整理资料的过程中慢慢找到自己的思路去表达,否则按照参考文章的思路去写,容易显得似曾相识。我自己也有这样的问题,与楼主共勉。
@axuebin 处理的是这种情况 `fn.apply(null, [1, 2])`
@gaopeng0108 arguments 对象是一个类数组对象,就是会有一个 length 属性,你在浏览器中可以看到这个属性,可以参考这篇文章 [https://github.com/mqyqingfeng/Blog/issues/14](https://github.com/mqyqingfeng/Blog/issues/14)