apply和call函数的区别(bind)

本文详细介绍了JavaScript中call和apply函数的区别及其使用场景,包括如何改变函数内部this的指向,以及bind函数的用途。

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

apply和call函数的区别(bind)

相同点:call和apply 都是用来修改函数中this的指向问题

想要修改this 的指向,那么必然有一个this修改后的指向,而函数必然后关系到传参问题,对于除了第一个参数的后面的参数:
1.call方法传给该函数的多个参数必须逐个例举出来;
2.apply方法将传给该函数的参数合并成一个数组作为自己的一个参数或者逐个例举

例如:将函数内this指向由前面person.sayHobby转变为后面的person

var name = 'nihao';
var person = {
    name: 'lihua',
    sayIntroduce: function () {
        return this.name ;
    },
    sayHobby: function (val1,val2) {
        return  this.name ;
    };
}
var person1 = {
    name: 'jms'
}
console.log(person.sayIntroduce()); // lihua
console.log(person.sayHobby.call(person1, 'swimming', 'hiking')); // jms
console.log(person.sayHobby.apply(person1, ['swimming', 'hiking'])); //jms

特殊情况
如果,call和apply不传参,this就指向window

另外说一下bind函数,这个方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的值。例如:

window.color="red";
var o={ color: "blue"};
function sayColor(){
	alter(this.color);
}
var objectSayColor = sayColor.bind(o);
objectSayColor();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值