call、apply和bind的有啥区别??

本文详细解析了JavaScript中call、apply和bind三个方法的用途与区别,包括如何通过它们改变函数调用上下文中的this指向,以及各自的参数传递方式。同时介绍了bind方法的特性,即返回一个新的函数而非立即执行。

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

call、apply和bind的区别??

call 和 apply,bind 三者都是用于改变this指向问题的

call 和 apply 的用法基本一致,call 和 apply 函数中的第一个参数都表示this指向

[ 如果当第一个参数为null、undefined时,默认指向window ]

apply 与call 相似,不同之处在于传递给方法的参数形式不一致,apply传递给方法的参数是数组的形式

call:

var fun = function(a,b){
        console.log(a);//1
        console.log(b);//2
        console.log(this);//obj
    }
var obj = {
     name:'我是obj'
 }
    //使用call方法将函数fun的this指向 obj
    fun.call(obj,1,2)

apply:

 	var obj1 = {
            name:'我是obj1'
        }
     fun.apply(obj1,[3,4]);

bind 不会立即执行,而是先返回改变this指向后的新方法。

var obj2 = {
    x : "x",
    fn : function(y){
        console.log(this.x + " ; " + y);
    }
}
	fn.bind(obj,1);  //返回fn方法
	var bfn = fn.bind(obj);
	bfn(1); //x  1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值