直接贴代码,后解说,编程就是这样,先应用,后理解
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName:"Bill",
lastName: "Gates",
}
var person2 = {
firstName:"Steve",
lastName: "Jobs",
}
person.fullName.call(person1); // 将返回 "Bill Gates"
要理解上面的3个概念首先要理解this关键字
this 是什么?
JavaScript this 关键词指的是它所属的对象。
它拥有不同的值,具体取决于它的使用位置:
- 在方法中,this 指的是所有者对象。
- 单独的情况下,this 指的是全局对象。
- 在函数中,this 指的是全局对象。
- 在函数中,严格模式下,this 是 undefined。
- 在事件中,this 指的是接收事件的元素。
像 call() 和 apply() 这样的方法可以将 this 引用到任何对象。
方法 | call | apply | bind |
方法参数 | 多个 | 单个数组 | 多个 |
方法功能 | 函数调用改变this指向 | 函数调用改变this指向 | 函数调用改变this指向 |
返回结果 | 直接执行 | 直接执行 | 返回待执行函数 |
低层实现 | 通过eval | 通过eval | 间接调用apply |