请教解释一个关于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,看上去很简单的程序,最后的结果却让我糊涂,希望有朋友能不惜赐教下,给仔细解释一下!谢谢了
请别复制人家的,请解释的更通俗易懂些。
展开
 我来答
匿名用户
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
维乐心灵音乐
2011-02-25 · TA获得超过531个赞
知道小有建树答主
回答量:1063
采纳率:50%
帮助的人:488万
展开全部
你这串程序,应该是在解释变量的生命周期吧。

第一个aa=11,是全局变量,在整个程序中都有效
然后在Test函数里边那个var aa=33,那个相当于私有变量,只在Test函数内部才有效
this.aa=22,这个跟类变量差不多,是可以直接用类名访问的变量,也就是静态成员
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式