javaScript基础--一个例子展示call、apply、bind的区别

        function fn(num1, num2) {
            return this.a + num1 + num2
        }
        var a = 20
        var object = { a: 40 }
        
        console.log(fn(10, 10)) // 40
        console.log(fn.call(object, 10, 10)) // 60
        console.log(fn.apply(object, [10, 10])) // 60

        var _fn = fn.bind(object, 1, 2)
        console.log(_fn === fn) // false
        console.log(_fn()) // 43
        console.log(_fn(1, 4)) // 43 因为参数被绑定。因此重新传入参数是无效的。

call:第一个参数是为函数内部指定this指向,后续的参数则是函数执行时所需要的参数,一个一个传递。

apply:第一个参数与call相同,为函数内部this指向,而函数的参数,则以数组的形式传递,作为apply第二参数。

bind:bind有所不同,函数调用bind时,函数并不会立即执行,而是返回一个新的函数,这个新函数与原函数有共同的函数体,但它并非原函数,并且新函数的参数与this指向都已绑定,参数为bind的后续参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值