浏览器解析器在调用函数时,每次都会向函数内部传递一个隐含的参数 this,this 指向的是一个对象,该对象被称之为函数执行的上下文。
函数在定义的时候 this 是不确定的,只有在调用的时候才可以确定;函数的调用方式不同,this 的指向也会不同。
直接以函数的形式调用函数时 this 指向 window
var uname = 'window对象'
function fun() {
console.log(this.uname)
}
fun() // window对象
当函数作为一个对象的方法时,被该对象所调用,那么 this 指向的是该对象
var uname = 'window对象'
function fun() {
console.log(this.uname)
}
var obj = {
uname: '王蛋蛋',
thisName: fun
}
obj.thisName() //王蛋蛋
构造函数中的 this 其实是一个隐式对象,类似一个初始化的模型,所有方法和属性都挂载到了这个隐式对象身上,后续通过 new 关键字来调用,从而实现实例化