网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月28日
漏签
0
天
前端开发工程师吧
关注:
32
贴子:
149
看贴
图片
吧主推荐
游戏
3
回复贴,共
1
页
<返回前端开发工...吧
>0< 加载中...
理解函数apply和call方法
只看楼主
收藏
回复
zlongvisual
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
每个函数都包含两个非继承而来的方法apply()和call(),apply方法与call方法区别仅仅是他们接收参数的方式不同。
在给函数传递参数的情况下,打算直接传入arguments对象或者数组,使用apply更方便。
否则选择call方法更合适。
在不传递参数的情况下,两个没有区别,使用哪个都无所谓。
送TA礼物
IP属地:上海
1楼
2014-04-04 15:35
回复
zlongvisual
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这两个方法都是在特定作用域中调用函数。
function sum(num1,num2){
return num1+num2;
}
function callSum1(num1,num2){
return sum.apply(this.arguments);
}
function callSum2(num1,num2){
return sum.apply(this,[num1,num2]);
}
function callSum3(num1,num2){
return sum.call(this,num1,num2);
}
alert(callSum1(10,10));//20
IP属地:上海
2楼
2014-04-04 15:48
回复
收起回复
2025-05-28 21:31:02
广告
zlongvisual
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
alert(callSum2(10,10));//20
alert(callSum3(10,10));//20
IP属地:上海
3楼
2014-04-04 15:49
回复
收起回复
zlongvisual
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
使用call和apply方法来扩充函数作用域,对象与方法不需要有任何耦合关系。
例如:
window.color = "red";
var o = { color:"blue" };
function sayColor(){
alert(this.color);
}
sayColor();//red
sayColor.call(this);//"red"
sayColor.call(window);//"red"
sayColor.call(o);//"blue"
IP属地:上海
4楼
2014-04-04 16:23
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
女生考法警被扒出发表极端言论
2602200
2
如何评价Uzi名人堂卡莎原皮
2489534
3
绝地潜兵2上海保卫战太燃了
2057188
4
美国无理由暂停签证面谈
1880523
5
因为马嘉祺和男友大吵一架
1731990
6
2025年新一线城市名单
1457425
7
郑钦文晋级法网32强
1443144
8
老任的Switch2已偷跑
1399412
9
星舰九号在非洲上空炸毁
1159840
10
哈利伯顿大三双带队拿到东决赛点
881769
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示