【JavaScript29】call和apply
-
概率
- 每个函数都包含两个非继承而来的方法:apply() 和 call()
- call和apply都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性
-
作用
- call() 方法 和 apply() 方法的作用相同:改变this指向
-
区别
- call():第一个参数是this,其余参数都是直接传递给函数,传递时函数必须逐个列举出来
- apply():传递给函数的是参数数组
-
正常的函数调用是无法改变this指向的;通过call或者apply可以改变this指向
function fn(a, b){
console.log(this);
return a + b;
}
var obj = {name: "qiaofu"};
var ret = fn(1, 2); // 这种方式是无法改变this的
console.log(ret);
var ret1 = fn.call(obj, 1, 2); // 动态的调整函数的this指向.
console.log(ret1);
- call与apply不同点,参数传值
function fn(a, b){
console.log(this.name);
return a + b;
}
var obj = {name: "盖伦"};
var ret1 = fn.call(obj, 1, 2);
console.log(ret1);
// apply和call的区别: apply在给函数传递参数的时候. 是一个整体(数组)传递
var ret2 = fn.apply(obj, [1, 2]);
console.log(ret2);
分类:
JavaScript
标签:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!