题解 | #修改 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



#JavaScript#
在线编程题解 文章被收录于专栏

web技术

全部评论

相关推荐

积极的小学生不要香菜:你才沟通多少,没500不要说难
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务