8.7w+
社区成员
var aa=11;
Test();
alert(aa);
function Test()
{
var aa=33;
alert(this.aa);
this.aa = 22;
alert(this.aa);
alert(aa);
}
//1.函数调用模式的时候,this指向window
function aa(){
console.log(this)
}
aa() //window
//2.方法调用模式的时候,this指向方法所在的对象
var a={};
a.name = 'hello';
a.getName = function(){
console.log(this.name)
}
a.getName() //'hello'
//3.构造函数模式的时候,this指向新生成的实例
function Aaa(name){
this.name= name;
this.getName=function(){
console.log(this.name)
}
}
var a = new Aaa('kitty');
a.getName() // 'kitty'
var b = new Aaa('bobo');
b.getName() // 'bobo'
//4.apply/call调用模式的时候,this指向apply/call方法中的第一个参数
var list1 = {name:'andy'}
var list2 = {name:'peter'}
function d(){
console.log(this.name)
}
d.call(list1) // 'andy'
d.call(list2) // 'peter'
var aa=11;
Test();
alert(aa);
function Test()
{
var aa=33;
alert(this.aa);
this.aa = 22;
alert(this.aa);
alert(aa);
}
alert(new Test().aa);
所以最后弹出的22是为什么呢?