TA的每日心情 | 慵懒 2022-3-8 11:41 |
---|
签到天数: 2 天 [LV.1]初来乍到
荣誉开发者
- 积分
- 1379
|
发表于
2021-12-8 12:13:20
|
显示全部楼层
难点应该在orig_fn.bind.apply这句,其实这些乱七八糟的语法是ES6之前的东西,ES6带来的新特性可以帮助解决很多问题。- [this].concat([].slice.call(arguments))
复制代码 应用ES6解构赋值的特性可以写成,所以那句代码等效于- fn = orig_fn.bind.apply(orig_fn, [this, ...arguments]);
复制代码 等效于- fn = orig_fn.bind(this, ...arguments);
复制代码 ,这里就可以看出,apply的作用是将arguments数组转换为多个单独的参数,即所谓的柯里化。其他代码不难理解,其实我觉得他这种将fn置为null然后用orig_fn来调用的做法有点故弄玄虚(说难听点,叫脱裤子放屁),当然也可能是我理解有问题,我觉得asyncify完全可以写成这样:
- function asyncify(fn) {
- return function() {setTimeout(fn, 0)};
- }
复制代码 |
-
查看全部评分
总评分:好评 +1
油猫币 +3
|