目标:
3.1 拿到重新赋值的语句
首先考虑的是谁被重新赋值,就是那个var _0xxxxxx = { xxx: xxx}
有可能会被重新赋值,所以先来对这个赋值语句来进行遍历:
由此可以拿到可能被重新赋值的变量名,然后对变量名进行绑定拿到所有的引用值:
所以下一步就是拿到我们想要的重新赋值的语句:
拿到赋值语句之后拿到左边的那个变量名,将所有引用了这个变量名的所有语句全部变成被重新赋值的变量名,然后就可以将这个赋值语句给删除了:
将赋值语句改完之后就可以进行分散对象的合并了
3.2 进行分散对象的合并
这一步就很简单了,只需要对path作用域里的赋值语句进行遍历,如果遍历(_path)的左边的变量名与path遍历的变量名一致就说名匹配成功,匹配成功之后就可以将其写入到path的值数组里面了
最后保存的结果: