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则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数。


相关文章
|
9天前
|
JavaScript 前端开发 开发者
call、bind、apply区别
【10月更文挑战第26天】`call`、`bind` 和 `apply` 方法在改变函数 `this` 指向和参数传递方面各有特点,开发者可以根据具体的需求和使用场景选择合适的方法来实现更灵活和高效的JavaScript编程。
15 1
|
5月前
|
JavaScript 前端开发
call和apply的区别
call和apply的区别
|
1月前
|
前端开发 JavaScript
比较一下apply/call/bind ?
本文首发于微信公众号“前端徐徐”,详细介绍了 JavaScript 中 `apply`、`call` 和 `bind` 方法的概念、使用场景及手动实现。主要内容包括: - **apply**:使用数组作为参数调用函数,并指定 `this`。 - **call**:直接传递参数调用函数,并指定 `this`。 - **bind**:返回一个绑定了 `this` 和部分参数的新函数。 文章还对比了这三个方法的区别,并提供了手动实现的代码示例。
15 2
|
6月前
call\apply\bind详解
call\apply\bind详解
32 0
bind、call、apply 区别
bind、call、apply 区别
77 0
call、apply、bind笔记
call、apply、bind笔记
62 0
|
JavaScript 前端开发
关于 this 指向、如何实现 new call apply bind 我所知道的
关于 this 指向、如何实现 new call apply bind 我所知道的
79 0
apply、bind和call
apply、bind和call
87 0
|
JavaScript 前端开发
一文搞定this、apply、call、bind
一文搞定this、apply、call、bind