JavaScript中的call和apply

本文详细解析了JavaScript中Function的call和apply两种参数传递方式的区别,包括它们如何影响方法调用的结果,以及如何正确使用这些方法来实现灵活的函数调用。

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

1、相同点

a) 产生的效果或作用完全相同

b)至少有一个参数

c)第一个参数必须有且是一个对象(Object),因为就是这个家伙很懒。

2、不同点:传递参数方式

前提:

1、两个对象:A和B

2、B有一个方法(这里用Function代替)

3、B的方法(Function)有两种参数传递方式,但该方法产生的结果一样

一种是除第一个参数外,其余的参数都打包进一个数组内,即B.Function.apply(A, args)

另一种是所有的参数都已各自的形式单独存在(包括第一个参数),即B.Function.call(A, arg, arg, ...)

4、A想拥有和B同样的方法,但不想自己单独创建,即只想借用别人现成的东西(好赖皮)

具体说明:

1、B.Function.call(A, arg, arg),这个例子是讲A对象“调用”B对象的Function(某个具体的方法)

注意call方法中的参数arg:

a)arg的个数为零或多个

b)arg可以是任何类型,包括Array(尚未试过)

call在这里译为“调用”,在JS中可以理解为“A对象调用B对象的某个方法”

2、B.Function.apply(A, args),这个例子是讲A对象“应用”B对象的Function(某个具体的方法)

注意apply方法中的参数args:

a)args是Array对象的一个实例,也就是说是一个数组

b)args的个数为零(也就是说不起作用)或1个(是否可以有多个,有待确认)

apply在这里译为“应用”,即“A对象应用B对象的某个方法”



转自 51cto.com 佚名 http://developer.51cto.com/art/201103/250108.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值