如何用apply实现一个bind?

Posted cwwstayhungrystayfoolish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用apply实现一个bind?相关的知识,希望对你有一定的参考价值。

面试题:如何用apply实现一个bind?

技术图片

Function.prototype._bind = function(target) {
    // 保留调用_bind方法的对象
    let _this = this;
    // 接收保存传入_bind方法中的参数,等价于arguments.slice(1),除了第一个参数其余全视作传入参数
    let args = [].slice.call(arguments, 1)
    return function() {
        return _this.apply(target, args)
    }
}

let obj = {
    name: '测试员小陈'
}

// 测试函数
function test(args) {
    console.log('this:', this);
    console.log('我的名字:', this.name);
    console.log('我接收的参数:', args);
}

console.log(test._bind(obj, "I am args")); // output: [Function]

test._bind(obj, "I am args")()

/* 执行结果
*  this: { name: '测试员小陈' }
*  我的名字: 测试员小陈
*  我接收的参数: I am args
*/

以上是关于如何用apply实现一个bind?的主要内容,如果未能解决你的问题,请参考以下文章

JS中的call(),apply(),bind()方法

如何用R语言for循环形成112358

call() apply() bind()方法 以及实现bind()方法

手写JS面试题 --- call apply bind 实现

如何用 ViewPager 中的另一个片段替换 Android 片段?

如何用我的.apply()函数中的新列解决一个讨厌的语法错误