好吧,我又一次被一个简单程序虐了。。。。。。求大神
javascript吧
全部回复
仅看楼主
level 5
forhord 楼主
和上次那个差不多,我反复查阅了之前各位大神的回复,想明白了一些,但是还是有一些不懂。好了不多说,上程序。
var aEvent_Boss=new Array();
function Event_Concrete()
{
this.myTry=alert();
}
aEvent_Boss[0]=new Event_Concrete(); //这句会因为实例化出来个
正确的
提示框
alert(aEvent_Boss[0].myTry); //这里显示为 undefined
aEvent_Boss[0].myTry; //所以这里就什么都没有了
注释上显示了运行结果。因为NEW关键字实例化引发弹窗,我能理解,但是之后的两行为什么没有进行赋值,这个确实不懂。
var aEvent_Boss=new Array();
function Event_Concrete()
{
this.myTry=function() { alert(); }
}
aEvent_Boss[0]=new Event_Concrete(); //什么都没有
alert(aEvent_Boss[0].myTry); //显示'='号以后的语句
aEvent_Boss[0].myTry; //什么都没有
这个就不好理解了,原则上来说,既然.myTry属性已经有了内容,为什么调用的时候依旧没东西呢
2012年10月17日 01点10分 1
level 12
this.myTry=alert();
alert() 有括號, 是執行, 執行完返回 undefined, 所以這一行等同於:
alert();
this.myTry = undefined;
2012年10月17日 01点10分 2
level 10
第二段代码里的this.myTry=function() { alert(); }表示this.myTry是一个函数名,所以调用的话应该是:aEvent_Boss[0].myTry();
2012年10月17日 01点10分 3
level 12
this.myTry=function abc() { alert(); }
...
aEvent_Boss[0].myTry();
留意後面的括號。沒括號,拿回的就是 abc 這個 function,不做些甚麼。它就只是一堆源碼。有括號,就是拿回 function,並且執行它,才會彈。
2012年10月17日 01点10分 4
level 8
第一段代码的内容可以简化为alert(alert());这样一看就很明白为什么会提示undefined
第二段代码里的myTry不是属性,而是方法,调用的方式是obj.myTry(),而不是obj.myTry
2012年10月17日 02点10分 5
level 5
forhord 楼主
原来如此,3Q3Q
2012年10月17日 02点10分 6
1