前端学习之编程题系列:(七)修改this指向

267 阅读1分钟

写在前面

本题目来自牛客网,已经成功通过测试。笔者刚刚开始学习前端,准备在掘金记录下自己的学习过程,欢迎和我一样准备入门前端的小伙伴们一起交流学习,也欢迎各位大佬批评指正~~~

题目描述

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

示例

输入

输出

用例

输入

function () { 
    var r = bindThis(function(a, b){
        return this.test + a + b
    }, {test: 2})(2, 3);
    return r === 7; 
}

输出

true

题解一:bind

function bindThis(f, oTarget) {
   //bind()返回值是一个函数
   return f.bind(oTarget)
}

题解二:call

function bindThis(f, oTarget) {
   return function(){
       return f.call(oTarget,...arguments)
   }
}

题解三:apply

function bindThis(f, oTarget) {
   return function(){
       //apply()的第二个参数为数组
       return f.apply(oTarget,[...arguments])
   }
}