this对象:
在对象内或者new的时候,this指的是当前对象
各自的定义:
call 调用一个对象的一个方法,用另一个对象替换当前对象
apply 调用一个对象的一个方法,用另一个对象替换当前对象
共同之处:
都可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象
不同之处:
apply: 最多只能有两个参数——新this对象和一个数组argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里。如果argArray不是一个有效的数组或arguments对象,那么将导致一个TypeError。
call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。
实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。
var apple={
color:'red',
say:function(){
console.log('我是'+this color);
}
}
var banbana={
color:'yellow',
}
apple.say();//输出 我是'red'
apple.say.call(banbana);//输出 我是yellow
apple.say.apple(banbana);//输出 我是yellow