-
call 与 apply 的不同点:两者传入的列表形式不一样
-
call可以传入多个参数;
-
apply只能传入两个参数,所以其第二个参数往往是作为数组形式传入
function fruits(){}
fruits.prototype = {
color: "red",
say: function(){
console.log("My color is " + this.color);
}
};
var apple = new fruits;
apple.say(); //My color is red
🍊区别:参数书写方式不同
call(thisObj, arg1, arg2, arg3, arg4);
apply(thisObj, [args]);
thisObj:call和apply第一个参数是一样的,该参数将替代Function类里面的this对象。
arg1,arg2…:是一个个的参数,
args:一个数组或类数组,是一个参数列表。
🍊改变函数作用域
var name = "小白";
var obj = {
name: "小红"
};
function sayName() {
return this.name;
}
console.log(sayName.call(this)); //小白
console.log(sayName.call(obj)); //小红
🍊总结
-
apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;
-
apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
-
apply 、 call 、bind 三者都可以利用后续参数传参;
-
bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
戳我获取!!**](https://bbs.csdn.net/topics/618191877)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!