普通函数中的this指向问题
普通函数的this指向如果用一句话概括的讲,是最后调用它的对象,下面分情况来看
1.该函数没有被上一级调用,那么this指向window
var name = 'mt'
function mt (){
var name = 'ff'
console.log(this.name);//mt
}
mt()
这里的mt函数没有被上一级调用,所以它的this指向最后的调用的对象——全局window
var mt = 'mt'
var obj = {
mt: 'ff',
a:{
getmt:function(){
console.log(this.mt);//mt
}
}
}
var test = obj.a.getmt
test()
这里的最后调用者是window,因为test被赋值时,并未执行函数,而执行test时,是和上一种情况一致的,所以输出window的mt,即mt
2.该函数被上一级对象调用,那么this指向上一级对象(多层调用时也是指向上一级对象)
var name = 'mt'
var obj = {
fn:function mt (){
var name = 'ff'
console.log(this.name); //aa
},
name:'aa'
}
obj.fn()
这里fn被obj调用,所以this指向最后的调用对象——obj
var name = 'mt'
var obj = {
fn:{
mt:function mt (){
var name = 'ff'
console.log(this.name)<