this常见用法
1. 脚本中,this的初始化为window
console.log(this) //window
2. 在普通函数中,this的初始化指向window
function f() {
console.log(this)
}
f() //此时f()相当于window.f()
3. 在object调用的函数中,this指向object。谁调用,指向谁
var obj = {
name = 'a',
f2: function() {
console.log(this)
}
};
obj.f2() //f2()指向obj
var f = obj.f2
f() //f()指向window
4. call / apply中,this可以被指定,即this指向第一个参数
var obj = {
name = 'a',
f2: function() {
console.log(this)
}
};
obj.f2() //f2()指向obj
var f = obj.f2
f.call(obj) //此时f.call(obj)的this指向obj
5. 在new的构造函数中,this指向正在创建的的对象
function F() {
console.log(this) //输出F()
}
var obj = new F()
最后来道练习题
var name = 'window'
var obj = {
var name = 'obj'
getNameFun: function() {
return functon() {
return this.name
}
//return this.name此时输出的一定是obj
},
getNameFun2: function() {
return this.name
}
}
console.log(obj.getNameFun()()) //这句话可以分解为var a = obj.getNameFun() var b = a()
// getNameFun返回的是个函数,所以按照函数调用来分析this指向
//输出就相当于window.a()
console.log(getNameFun2()) //输出obj