目的:了解this指向
建议阅读时间:2分钟
this 要在执行的时候才能确认值,定义的时候无法确认
this指向有以下几种情况:
- 作为构造函数的时候的指向
- 作为普通函数的时候执行,谁调用,指向谁
- 作为对象属性执行的时候,指向这个对象
- 使用call、apply、bind的时候,指向被绑定的
var a = {
name: 'A',
fn: function() {
console.log(this.name)
}
};
// 此时,函数刚刚定义
// 我们还不知道this指向什么
执行以下代码
a.fn()的时候,this指向a。
a.fn.call({name: 'B')指向{name: 'B'}这个对象
var fn1 = a.fn;
fn1();
此时的this指向window;因为,它等同于
window.fn1();
// 构造函数
function Foo(name) {
this.name = name;
}
// 此时也不知道this的指向
var f = new Foo('zhangsan');
// 此时this指向f