bind、call、apply区别

相同点:三者都是用来重定义this指向
区别:bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

call

语法

function.bind(obj, ...arguments)

参数

  • obj

需要改变this的对象

  • …arguments

一连串的参数,call必须是以这一样的形式

例子

		let obj={
            name:'xiaoming'
        }
        let obj1={
            name: 'xiaocheng',
            fun: function(){
                console.log(this.name);
                console.log(...arguments);
            }
        }
        obj1.fun.call(obj, 'xiaolin','xiaoli')  //xiaoming
        										//xiaolin xiaoli

apply

语法

function.bind(obj, [arg1,arg2,arg3])

参数

以数组的形式

bind

bind()方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。

语法

function.bind(thisArg, ...arguments)

参数

  • thisArg

必填,需要改变this的对象

  • …arguments

与call相同

例子

		const module = {
            x: 42,
            getX: function () {
                return this.x;
            }
        };

        const unboundGetX = module.getX;
        console.log(unboundGetX()); // The function gets invoked at the global scope
        // expected output: undefined

        const boundGetX = unboundGetX.bind(module);
        console.log(boundGetX());
        // expected output: 42

参考文章:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
https://www.cnblogs.com/moqiutao/p/7371988.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值