javascript的this指向

555 阅读1分钟

目的:了解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