this寻找规则:
首先判断()左边是否为属性引用,如果不是,那么将this设置为undefined,如果是,那么判断引用属性是否为属性引用,如果是,那么将this设置为这个属性引用值的对象.如果不是,那么将this设为undefined,如果this为undefined,那么this就等于window
1:首先判断()左边是否为属性引用,如果不是,那么将this设为undefined
function f1 () {
return this
}
f1() // this === window
// 括号左边不是引用类型,将this设为undefined,个人理解:函数这个代码段在window的作用域下
2:首先判断()左边是否为引用类型,如果是,那么接着判断是否为属性引用,如果是,那么将this设置为这个属性引用值的对象
var obj = {
f1: functiuon () {
return this
}
}
obj.f1() // this === obj
// 括号左边为引用类型,并且为属性引用,则将this设为obj
3:首先判断()左边是否为引用类型,如果是,那么接着判断是否为属性引用,如果不是,那么将this设置为undefined
function f1 () {
var f2 = function () {
console.log(this) // this为window
}
f2()
}
f1() // f2为引用类型但是并不是属性引用,所以设置为undefined
网友评论