+ -
当前位置:首页 → 问答吧 → this的疑惑

this的疑惑

时间:2011-10-07

来源:互联网

var obj= {
a:1,
b:this.a
};
alert(obj.b);
输出:undefined

这里this指向window:
var a = 0
var obj= {
a:1,
b:this.a
};
alert(obj.b);
输出为0。

但如果将b属性定义为一个方法则没问题:
var obj= {
a:1,
b:function(){return this.a;}
};
alert(obj.b());
输出1,this指向obj。

这是为何?

作者: jianwu5   发布时间: 2011-10-07

楼主你这不是自己理解的挺好么 没有什么为什么 这就是js

作者: fanchuanzhidu   发布时间: 2011-10-07

哎,为这个this快气疯了。
真想不通那些js高手怎能用js开发游戏的。

作者: jianwu5   发布时间: 2011-10-07

晕了
这里this指向window:
var a = 0
var obj= {
a:1,
b:this.a
};
alert(obj.b);
输出为0。

是因为你定义了a 跟this不this的没任何关系~~~
a:1没任何意义~~~ 你没有定义a,当然报undefined了
var a = 0
var obj= {
b:this.a
};
alert(obj.b);
你试试看~~

作者: butcher2002   发布时间: 2011-10-07

引用 3 楼 butcher2002 的回复:

晕了
这里this指向window:
var a = 0
var obj= {
a:1,
b:this.a
};
alert(obj.b);
输出为0。

是因为你定义了a 跟this不this的没任何关系~~~
a:1没任何意义~~~ 你没有定义a,当然报undefined了
var a = 0
var obj= {
b:this.a
};
alert(obj.……

我的第二个例子是说明第一个例子中this指向了window。如果不在全局定义a则报undefined,而不是自己理解的obj!

作者: jianwu5   发布时间: 2011-10-07

引用 1 楼 fanchuanzhidu 的回复:

楼主你这不是自己理解的挺好么 没有什么为什么 这就是js

顺便问怎么结贴,我发帖的时候说我之前有2个贴未结。

作者: jianwu5   发布时间: 2011-10-07

引用 5 楼 jianwu5 的回复:

引用 1 楼 fanchuanzhidu 的回复:

楼主你这不是自己理解的挺好么 没有什么为什么 这就是js

顺便问怎么结贴,我发帖的时候说我之前有2个贴未结。

在左边我的未结的帖子里,有结贴的按钮的吧。。。。

作者: BLUE_LG   发布时间: 2011-10-07

热门下载

更多