今天做了一个相关的小题儿,没想到还做错了,分享一下子 :
以下对call() 和 apply() 说法哪些是正确的 ()
1.apply()函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组;
2.如果第一个参数是null,则使用全局对象代替;
3.call和apply的意思一样,只不过是参数列表不一样.
4.通过apply可以将数组装换为参数列表的集合
答案:all right (1 2 3 4)
分析一下子---------------
相同点:
都可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由this指定的新对象。
不同点:
apply:最多只能有两个参数——B.apply(A, [1,2,3])。 A调用B对象的方法
call:它可以接受多个参数,B.apply(A ,1,2,3)。 A调用B对象的方法
实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。
来点代码。更直观一些:
1、基本常用的方法
function add(a,b){
return a+b;
}
function sub(a,b){
return a-b;
}
var result1 = add.apply(sub,[1,2]); sub方法里实际调用的是add方法里的逻辑
var result2 = sub.apply(add,[1,2]);
console.log(result1); //3
console.log(result2); //-1
2、用来继承
function Student(name){
this.name = name;
this.showName = function(){
console.log(this.name);
}
}
function Teacher(name){
Student.apply(this,[name]);
}
var PDD = new Teacher("马老师");
PDD.showName(); //马老师
本文介绍了JavaScript中call()和apply()的使用,它们都用于改变函数调用时的上下文(this)。相同点是改变函数执行的环境,不同点在于传递参数的方式。apply接收一个参数数组,而call则直接传递参数列表。文章通过代码示例展示了这两个方法在基本应用和继承场景中的使用,并解释了它们如何转换参数列表。
322

被折叠的 条评论
为什么被折叠?



