ES6——call和apply以及bind的区别

简介: call和apply以及bind的区别

call()、 apply()、 bind() 都是用来重新定义this对象的指向

看段代码:

语法格式:

fn.call(obj, 4,2)
fn.apply(obj, [4, 2])
fn.bind(obj, 4, 2)()
fn.bind(obj, [4, 2])()

第一个参数都是this的指向对象

var obj = {
    name: 'Nanchen'
  }
  function fn(a, b) {
    console.log(this);        //此处的this指向的是obj
    console.log(a + b);
  }
  fn.call(obj, 4,2)
  fn.apply(obj, [4, 2])
  fn.bind(obj, 4, 2)()
        fn.bind(obj, [4, 2])()

效果:

20210927145735864.png

由此可见:

1.能够调用函数

2.能够改变普通函数的this指向并能够传参

3.这三种方法的使用是一致的 只是传参的方式不同

call()可以直接传参 而apply()需要传数组

call、apply和bind的区别:

区别:call和apply改变了函数的this上下文后便执行该函数,而bind则是返回改变了上下文后的一个函数。

call和apply的区别:

他们俩之间的差别在于参数的区别,call和apply的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,apply则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数。


相关文章
|
7月前
new bind apply call instanceof 等笔记
new bind apply call instanceof 等笔记
18 0
|
1月前
call\apply\bind详解
call\apply\bind详解
12 0
|
8月前
bind、call、apply 区别
bind、call、apply 区别
51 0
|
10月前
call、apply、bind笔记
call、apply、bind笔记
46 0
|
10月前
|
JavaScript 前端开发
关于 this 指向、如何实现 new call apply bind 我所知道的
关于 this 指向、如何实现 new call apply bind 我所知道的
58 0
apply、bind和call
apply、bind和call
61 0
|
JavaScript 前端开发
一文搞定this、apply、call、bind
一文搞定this、apply、call、bind