题解 | #修改 this 指向#
修改 this 指向
https://www.nowcoder.com/practice/a616b3de81b948fda9a92db7e86bd171
function bindThis(f, oTarget) { return function(x,y){ return f.call(oTarget,x,y); }; }
call、apply、bind都是改变this指向的方法.
- dn.call(): 当前实例(函数fn)通过原型链的查找机制,找到function.prototype上的call方法,function call(){[native code]}
把找到的call方法执行 当call方法执行的时候,内部处理了一些事情 1.首先把要操作的函数中的this关键字变为call方法第一个传递的实参 2.把call方法第二个及之后的实参获取到 3.把要操作的函数执行,并且把第二个以后传递进来的实参传递给函数
- apply:和call基本上一致,唯一区别在于传参方式
apply把需要传递给fn的参数放到一个数组(或者类数组)中传递进去,虽然写的是一个数组,但是也相当于给fn一个个的传递
- bind:语法和call一模一样,区别在于立即执行还是等待执行,bind不兼容IE6~8
在线编程题解 文章被收录于专栏
web技术