请教解释一个关于javascript中this的函数。
varaa=11;Test();alert(aa);functionTest(){varaa=33;alert(this.aa);this.aa=22;alert(thi...
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);
我刚学JS,看上去很简单的程序,最后的结果却让我糊涂,希望有朋友能不惜赐教下,给仔细解释一下!谢谢了
请别复制人家的,请解释的更通俗易懂些。 展开
Test();
alert(aa);
function Test()
{
var aa=33;
alert(this.aa);
this.aa = 22;
alert(this.aa);
alert(aa);
}
alert(new Test().aa);
我刚学JS,看上去很简单的程序,最后的结果却让我糊涂,希望有朋友能不惜赐教下,给仔细解释一下!谢谢了
请别复制人家的,请解释的更通俗易懂些。 展开
2个回答
2011-02-25
展开全部
“通俗易懂些”说说我的理解。
js函数是一种对象。
new关键字可以将一个函数对象实例化为一个新的对象。
被实例化后,源对象内的this将指向这个新的对象,否则如没有用new实例化则this指向默认的顶层对象window。
如Test()和new Test()两者的区别:前者仅仅执行一次,this指向window,后者不仅执行一次而且返回一个新的对象,实例化进行时其this指向一个空的对象(在内存中),还没给在个this所指对象添加aa属性时alert(this.aa)是undefined。this.aa = 22; 给了这个对象增加了aa属性,所以第二个alert(this.aa); 弹出22;
函数内var aa=33; 这个aa!=this.aa,而且aa!=window.aa, 所以alert(aa) 弹出33;
最后alert(new Test().aa); (new Test())这个匿名对象已经有了aa属性,值为22,所以最后弹出22
js函数是一种对象。
new关键字可以将一个函数对象实例化为一个新的对象。
被实例化后,源对象内的this将指向这个新的对象,否则如没有用new实例化则this指向默认的顶层对象window。
如Test()和new Test()两者的区别:前者仅仅执行一次,this指向window,后者不仅执行一次而且返回一个新的对象,实例化进行时其this指向一个空的对象(在内存中),还没给在个this所指对象添加aa属性时alert(this.aa)是undefined。this.aa = 22; 给了这个对象增加了aa属性,所以第二个alert(this.aa); 弹出22;
函数内var aa=33; 这个aa!=this.aa,而且aa!=window.aa, 所以alert(aa) 弹出33;
最后alert(new Test().aa); (new Test())这个匿名对象已经有了aa属性,值为22,所以最后弹出22
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询