js 实现call和apply方法,超详细思路分析
壹 ❀ 引 我在 五种绑定策略彻底弄懂this 一文中,我们提到 call,apply,bind 属于显示绑定,这三个方法都能直接修改this指向。其中call与apply比较特殊,它们在修改this的同时还会直接执行方法,而bind只是返回一个修改完this的 boundFunction 并未执行,那么今天我们来讲讲如果通过JavaScript模拟实现call与apply方法。 贰 ❀ 关于call与apply1 贰 ✿ 壹 call与apply区别 除了都能改变this指向并执行函数,call与apply唯一区别在于参数不同,具体如下: var fn = function (arg1, arg2) { // do something }; fn.call(this, arg1, arg2); // 参数散列 fn.apply(this, [arg1, arg2]) // 参数使用数组包裹 call第一参数为this指向,后续散列参数均为函数调用所需形参,而在apply中这些参数被包裹在一个数组中。 贰 ✿ 贰 使用场景 call与apply在日常开发中非常实用,我们在此列举几个实用的例子。 检验数据类型: function type(obj) { var regexp = /\s(\w+)\]/; var result = regexp.exec(Object