call 和 apply
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
call 和 apply 通常用来修改函数的上下文,函数中的 this 指针将被替换为 call 或者 apply的第一个参数,我们不妨来看看 2.1.3 小节的例子:
//定义一个人,名字为jack
var jack = {
name : "jack",
age : 26
}
//定义另一个人,名字为abruzzi
var abruzzi = {
name : "abruzzi",
age : 26
}
//定义一个全局的函数对象
function printName(){
return this.name;
}
//设置printName的上下文为jack, 此时的this为jack
print(printName.call(jack));
//设置printName的上下文为abruzzi,此时的this为abruzzi
print(printName.call(abruzzi));
print(printName.apply(jack));
print(printName.apply(abruzzi));
只有一个参数的时候 call 和 apply 的使用方式是一样的,如果有多个参数:
setName.apply(jack, ["Jack Sept."]);
print(printName.apply(jack));
setName.call(abruzzi, "John Abruzzi");
print(printName.call(abruzzi));
得到的结果为:
Jack Sept.
John Abruzzi
apply 的第二个参数为一个函数需要的参数组成的一个数组,而 call 则需要跟若干个参数,参数之间以逗号(,)隔开即可。
在线练习
{$ activeFileHint $}