美文网首页
js中bind、call、apply的区别

js中bind、call、apply的区别

作者: 枫树林 | 来源:发表于2018-04-06 22:53 被阅读0次

这三个方法都是写到Function对象的原型上的,也就是写到Function.prototype上的;其中bind方法是ES5里新增的。

bind方法

bind方法第一个参数是指定this,其他是直接传递给函数的参数。
用来固定某个函数的this和参数并返回一个函数等待后续调用。

function demo(a, b) {
    console.log(this, a, b);
}
let fn = demo.bind("this is bind", 12) // 没有任何输出,说明没有执行

fn() // "this is bind" 12 undefined
fn(10) // "this is bind" 12 10 
// bind方法可以在需要的时候再调用,也可以在调用的时候再添加参数,并且原有的参数也不会被覆盖。

call方法

call 方法第一个参数是指定this,其他是直接传递给函数的参数

demo.call("this is call",1) // "this is call" 1 undefined
demo.call("this is call", 1, 2) // "this is call" 1 2

//call方法是在指定this 和参数后立即调用这个函数

apply方法

apply方法第一个参数是指定this,第二个参数是传递给函数的参数的的数组;apply方法只有两个参数。

可以用于不知道参数个数的场景

demo.apply("this is apply", [1]) // "this is apply" 1 undefined
demo.apply("this is apply", [1,2]) // "this is apply"  1 2

// apply方法也是在指定this和参数后立即调用

总结

call和apply方法都是在指定this和参数后立即执行,区别是传递给函数的参数形式不一样;bind方法是在指定this和参数后返回一个函数,什么时候需要调用了再调用,并且可以在调用的时候添加参数,其他的和call方法一样

相关文章

  • js中 call apply bind的理解

    js中的call apply bind都是用来改变this指向的 call apply bind都是用来改...

  • call apply

    js基础知识---call,apply,bind的用法 call,apply详解 javascript中,call...

  • 理解JS中的 call, apply, bind方法

    call, apply, bind 方法的目的和区别 我们常说,call(), apply(),bind()方法的...

  • this_原型链_继承

    this相关问题 apply、call 、bind的作用以及区别 call、apply和bind方法的用法以及区别...

  • this&原型链&继承

    this 1. apply、call 、bind有什么作用,什么区别? apply、call 、bind 都是用来...

  • 关于 this_原型链_继承 相关问题总结

    关于this 1- apply、call 、bind的作用和区别 apply、call 、bind都有改变thi...

  • js小知识

    1. call、apply和bind的区别 call、apply和bind方法都是函数对象中的方法,用来动态地改变...

  • this_原型链_继承

    this 相关 1. apply、call 、bind有什么作用,什么区别 apply、call、bind可以改变...

  • this_原型链_继承

    问题1: apply、call 、bind有什么作用,什么区别? apply和call call apply,调用...

  • this_原型链_继承

    问题1: apply、call 、bind有什么作用,什么区别 在JavaScript中, call和apply都...

网友评论

      本文标题:js中bind、call、apply的区别

      本文链接:https://www.haomeiwen.com/subject/dbzshftx.html