apply 方法和 call 方法可能是学习javascript的难点之一,至少我这么认为,以下例子是我搜了很多文章后,感觉比较容易理解的例子:
call:
var obj = {
message: 'My name is: '
}
function getName(firstName, lastName) {
console.log(this.message + firstName + ' ' + lastName)
}
getName.call(obj, 'Dot', 'Dolby')// My name is: Dot Dolby
apply:
var obj = {
message: 'My name is: '
}
function getName(firstName, lastName) {
console.log(this.message + firstName + ' ' + lastName)
}
getName.apply(obj, ['Dot', 'Dolby']);//My name is: Dot Dolby
总结一下:
call 和 apply 都是 Function.prototype上的方法,目的都是调用一个函数应用到某个对象,并传递一些方法里需要的参数。当然参数是可选的。