JavaScript进阶:JS中的call()、apply()和bind方法

本文详细介绍了JavaScript中的三种函数调用方法:call(), apply() 和 bind() 的使用方法及区别。call() 和 apply() 用于立即执行函数并更改函数内部 this 的指向,主要区别在于参数传递方式不同;bind() 方法则创建一个新的函数,在调用时改变 this 的指向。

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

call()、apply()和bind方法

1、call方法:
语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

2、apply方法:
语法:apply([thisObj[,argArray]])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
说明:
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

function fun1 (x,y){
    alert(x+y);
}
function fun2 (x,y){
    alert(x-y);
}
var array=new Array;
array=[3,1];
fun1.call(fun2,3,1);       //4
fun1.apply(fun2,array);     //4

call、apply的区别

call、apply是修改函数的作用域,并且立即执行,而bind是返回了一个新的函数,不是立即执行,即call and apply call a function while bind creates a function。bind在回调函数中常用到。


3、bind方法:

语法:bind(thisOb[,arg1[, arg2[,   [,.argN]]]]])

定义:bind方法生成了一个新的函数,称为绑定函数,传入bind方法的第一个参数作为这个绑定函数的this对象,传入bind的第二个参数连同后面调用绑定函数时传入的参数按照先后顺序(传入bind的在前)构成绑定函数的参数。

this.num=9;
var object = {
    num:81,
    getNum:function(){
        alert(this.num);        //81
    }
}
object.getNum();
var getNum=object.getNum;
getNum();       //9
var fun=getNum.bind(object);
fun();      //81


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值