js中的this指向问题

141 阅读1分钟

一、 在普通的function函数中,谁调用,this就指向谁

我们先思考如下一个例子:

问:d.getName()的值 是吕蒙 还是吕布?

看看结果,是吕布,为什么是吕布而不是吕蒙呢?

因为在普通的function中,谁调用这个函数,这个this就指向谁

二、如果被多层对象调用了,this指向它的上层对象

如果把上面的对象在包一层对象

var obj = {
    d: {
        getName: function(){console.log(this)}    
}
}

window.obj.d.getName();猜猜会打印出谁呢?

结果是 d对象。因为你最后调用getName方法的还是d对象 所以,谁调用 this就指向谁。

三、如果是构造函数中的this,this就指向一个空对象,举个例子

function fn() {
    console.log(this)
}
var obj = new fn()
console.log(obj)