call 和apply通常是用来修改函数的上下文,函数中的this指针将被替代为它们的第一个参数。
var jack={ name:"jack", age:20 } var join={ name:"join", age:19 } function printName(){ return this.name; } var arr=printName.call(jack); console.log(arr)//输出的结果为 jack。 var sole=printName.call(join); console.log(sole)//join
这是只有一个参数的时候,它们的用法是一样的如果有多个参数apply的第二个参数为一个函数所需要的参数组成的数组,call则是需要跟若干个参数
function setName(name){ this.name=name; } setName.apply(jack,["Jack Setp."]); console.log(printName.apply(jack))//结果为Jack Setp.
function setName(name){ this.name=name; } setName.call(join,"Join Abruzzi."); console.log(printName.apply(join))//Join Abruzzi.
call后的若干个参数用(,)隔开就好了!