FED1 修改 this 指向(中等)
通过率:40.23%
描述
封装函数 f,使 f 的 this 指向指定的对象
示例1
输入:无
输出:无
参考资料
bind,call,apply的区别
- 当我们使用一个函数需要改变 this 指向的时候才会用到 call,apply,bind
- 如果你要传递的参数不多,则可以使用 fn.call(thisObj, arg1, arg2 ...)
- 如果你要传递的参数很多,则可以用数组将参数整理好调用 fn.apply(thisObj, [arg1, arg2 ...])
- 如果你想生成一个新的函数长期绑定某个函数给某个对象使用,则可以使用 const newFn = fn.bind(thisObj); newFn(arg1, arg2...)
- call,apply,bind不传参数自动绑定在 window
/* 用bind */ function bindThis(f, oTarget) { return f.bind(oTarget) } /* 用call */ function bindThis(f, oTarget) { return function() { return f.call(oTarget, ...arguments) } } /* 用apply */ function bindThis(f, oTarget) { return function() { return f.apply(oTarget, arguments) } }