日期:2014-05-16  浏览次数:20317 次

问个很简单的对象直接量问题
var obj = { a:this.b, b:123}
alert(obj.a)
请问这个a属性怎么取不到b属性的123呢,要想取怎么取到呢?

------解决方案--------------------
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。
------解决方案--------------------
那人根本不懂。
要弄清楚this在各种情况下的指代对象,不真真正正写上几个控件是不得行的
其实说穿了也简单:
方法中的this指代的就是方法的拥有者,全局函数中的this指代window,局部函数中的this要看上下文,看其归属的对象
但是要记住,this只有在函数调用时才能确定其中的this的指代,比如同一个函数作为全局函数被调用和作为方法被调用其this代表的东西就不一样。
var obj=new Object();
function test()
{
alert(this);

obj.test=test;
test();
obj.test();//都是这个函数,但是this不一样,自己体会
话说了这么多,你该结贴给分了吧?