bind和call区别是什么?

本文探讨了JavaScript中函数的bind和call方法。虽然两者都能改变函数内部的this指向,但call在调用时立即执行函数,而bind则返回一个新的函数,需要额外调用来执行。通过示例展示了bind和call的使用方式及其效果,强调了它们在实际编程中的应用差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在调用bind的过程中本身不会执行函数,会返回函数 ,函数在调用call过程中本身会执行

function  Person(name,age){
  name ='周冬雨';
  age= 18;
   console.log(this.name);
   console.log(this.age);
}
let obj={
    name:"马冬梅",
    age:19,
}

 Person.call(obj,"周冬雨",18)

在这里插入图片描述
相信对于call我们已经很熟悉了,就是改变this指向,在调用call时候本身执行了Person这个方法。
下面看bind:

function  Person(name,age){
  name ='周冬雨';
  age= 18;
   console.log(this.name);
   console.log(this.age);
}
let obj={
    name:"马冬梅",
    age:19,
}
let person=  Person.bind(obj,"周冬雨",18)

在这里插入图片描述
我们发现什么都不会打印。

接着我们执行以下这个方法:

function  Person(name,age){
  name ='周冬雨';
  age= 18;
   console.log(this.name);
   console.log(this.age);
}
let obj={
    name:"马冬梅",
    age:19,
}
let person=  Person.bind(obj,"周冬雨",18)
person();

在这里插入图片描述
我们看到结果一样的,但真正输出结果是因为调用了person这个方法才有的,因为调用bind过程中不会执行方法,只会返回一个方法,然后再执行。这两句话加起来的效果和直接调用call的效果是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值