this指的是调用这个方法的对象。
例子1:
var pet = {
word: '你好',
say: function () {
console.log(this.word)
console.log(this === pet)
}
}
//这里使用pet调用say方法,所以say方法里面的this指向pet
//哪个调用say方法,say方法里面的this就指向这个对象
pet.say()
运行结果:
这里使用pet调用say方法,所以say方法里面的this指向pet
例子2:
function say(words){
this.words = words //给this增加words属性
console.log(this.words)
console.log(this === global)
}
//代码运行在nodeJs中,这里的say方法是被global调用。
//say方法里的this指向的是global
say('你好')
运行结果:
代码运行在nodeJs中,这里的say方法是被global调用。say方法里的this指向的是global。
如果这段代码运行在浏览器环境中,this指的是window对象
例子3:
function Pet(words){
this.words = words //给this增加words属性
this.say = function(){
console.log(this.words)
console.log(this)
}
}
var dog = new Pet('汪汪汪...')
//say方法里的this指向的是调用这个方法的对象dog
dog.say()
运行结果:
say方法里的this指向的是调用这个方法的对象dog