javascript中this的使用主要分为几下几种情况
- 函数预编译过程this ----> window
function test(c){
var a = 123;
function b(){}
}
//预编译过程
AO{
arguments: [1],
this: window,
c: 1,
a: undefined,
b: function(){}
}
//函数执行
test(1)
- 全局作用域里this-------->window
- call/apply可以改变函数运行时this的指向
- obj.func() 谁调用这个方法,这个方法中的this就指向谁
思考:
var name = “222”;
var a = {
name: “111”,
say: function(){
console.log(this.name);
}
};
var fun = a.say;
fun(); //222
a.say(); //111
var b = {
name: “333”,
say: function(fun){
fun();
}
};
b.say(a.say); //222
b.say = a.say; //
b.say(); //333
var a = 5;
function test(){
a = 0;
alert(a);
alert(this.a);
var a;
alert(a);
}
分别执行test()和new test()
执行test()的时候,预编译环节中this指向window
AO{
a: 0,
this: window
}
所以结果分别是 0 5 0
执行new test()的时候,预编译环节中
AO{
a: 0,
this: {}
}
所以结果是 0 undefined 0