前端笔试题整理——修改this指向

前端笔试题整理——修改this指向

题目:封装函数 f,使 f 的 this 指向指定的对象

修改this指向总共有apply,call,bind三种方法,下面对这三种函数的用法进行了整理。

  1. apply ,fn.apply(obj, [argsArray])
    apply接受两个参数,第一个参数是this的指向,第二个参数是函数接受的参数,以数组的形式传入。并且修改原函数this指向就会立即执行。
function bindThis(f, oTarget) {
    return function(){
        return f.apply(oTarget,arguments)
    }
}
  1. call ,fn.call(obj, arg1, arg2, …)
    call方法的第一个参数也是this的指向,后面传入的是一个参数列表。并且和apply一样为立即执行函数。
function bindThis(f, oTarget) {
    return function(){
        return f.call(oTarget,...arguments)
    }
}
  1. bind ,fn.bind(obj)
    传入参数为this的指向。但是bind改变this指向后不会立即执行,而是返回一个永久改变this指向的函数。
function bindThis(f, oTarget) {
    return f.bind(oTarget)
}

此条博客参考彻底弄懂bind,apply,call三者的区别.

你可能感兴趣的:(javascript,前端)