<script type="text/javascript">
function GG(){
this.something = 200;
alert(this.something); // 1,200
function G1(){
alert(this.something); //2,100
function G2(){
alert(this.something); //3,100
}
G2();
}
G1();
}
something = 100;
var g = new GG();
</script>
g=new GG()时,执行GG()的构造函数,GG()中this.something=200,this指向g,
1处的this.something=200,为什么2,3处的this.something=100呢,这时this指向谁呢?同在GG()
内部,1处的this和2,3处的this为什么不同?
function GG(){
this.something = 200;
alert(this.something); // 1,200
function G1(){
alert(this.something); //2,100
function G2(){
alert(this.something); //3,100
}
G2();
}
G1();
}
something = 100;
var g = new GG();
</script>
g=new GG()时,执行GG()的构造函数,GG()中this.something=200,this指向g,
1处的this.something=200,为什么2,3处的this.something=100呢,这时this指向谁呢?同在GG()
内部,1处的this和2,3处的this为什么不同?
在函数里的this只有两种指向,当指明调用对象的时候,他就指向该调用对象,如果没有指向该调用对象,就是window全局对象,var g = new GG();所以他里面的this指向g,
但是G2(),G1(),都没有调用对象,就指向了window,something=100,就是window.something=100,所以是弹出来100
是关于call()的。
function GG(){
this.something = 200;
alert(this.something); // 200
function G1(){
alert(this.something); //200
function G2(){
alert(this.something); //200
}
G2.call(this);
}
G1.call(this);
}
something = 100;
var g = new GG();
</script>
当G1.call(this)时,G1为什么会有call()的方法呢?它继承了某些对象吗?
函数的执行,要么是new的时候,要么是GG()执行,G1.call(this)这样写,为什么
会执行G1的方法呢?