关于javascript中call和apply的用法

本文通过一个简单的示例解释了JavaScript中call与apply的区别及其用法。重点在于如何改变函数内部this的指向,并对比了两者传递参数的不同方式。

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

最近看了《javaScript高级程序设计》分享下
引用里面一个例子来辅助理解call和apply
function sayColor(sPrefix,sSuffix){
      alert(sPrefix,
this.color,sSuffix)
}

var obj = new Object();
obj.color 
= 'red';
sayColor.call(obj,
'The color is ',' a very nice color indeed');
sayColor.apply(obj,[
'The color is ',' a very nice color indeed']);
//output "The color is red a very nice color indeed".

 

 

sayColor使用了this,但是this还没指向确切的实体对象

call和apply的第一个参数的作用就是把实体传入,告诉浏览器我是要在obj这个对象上执行sayColor,自然this指向了obj

区别仅仅在于后续参数,apply是使用数组,而call则原方法有多少个追加多少个

从前我们说call和apply都从继承的角度,而他确实也是为了继承而设计的,但是往往例子过于复杂,
这个例子好在他非常简单。
单个方法,普通Object使用call apply就是这样,
这个例子帮助我在理解绑定的含义时更加清晰。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值