posts - 3,  comments - 2,  trackbacks - 0
            2007年11月2日
          誰能告訴我為什么這個(gè)blog在FireFox里總是報(bào)錯(cuò)啊(js錯(cuò)誤)
          posted @ 2007-11-02 10:20 zozilla 閱讀(252) | 評(píng)論 (2)編輯 收藏
          construtor接受一個(gè)key word argument和 一個(gè)srcNode。
          construtor的調(diào)用結(jié)束之后kwArgs的屬性會(huì)被合并到新生成的對(duì)象中。如果kwArgs中有和prototype中同名的屬性,后果是這樣:

          dojo.declare("some.Sample", [some.widget],
          {
          text: "",
          constructor: function(kwArgs) {
          this.text = kwArgs['text'].toUpperCase();
          },
          postCreate: function() {
          console.info(this.text); // 你以為應(yīng)該是大寫對(duì)吧
          }
          });

          new some.Sample( {text: "hello, world"} );

          結(jié)果:
          hello, world //其實(shí)還是小寫, 因?yàn)閗wArgs中的text被合并進(jìn)當(dāng)前對(duì)象的狀態(tài),已經(jīng)是upper case的對(duì)象的text又被kwArgs中的小寫覆蓋了。

          關(guān)于constructor的kwArgs是如何確定的:
          在new XXX()的情況下,是在代碼中確定的,像上面的例子。這是比較常見的情況。
          如果對(duì)象是由標(biāo)簽方式生成的(就是使用dojo.parser),kwArgs是由parser根據(jù)prototype的屬性讀取標(biāo)簽的attribute生成的,如果標(biāo)簽上有不在prototype中的屬性,這個(gè)屬性不會(huì)被包含在kwArgs的屬性中。

          dojo.declare("some.Sample", [some.widget],
          {
          // text: "", 被去掉了
          constructor: function(kwArgs) {
          console.info(kwArgs['text']);
          }
          });

          使用new XXX()的方式:
          new some.Sample({text: "hello, world"});

          結(jié)果:
          hello, world

          使用標(biāo)簽方式:
          ...
          <div dojoType="some.Sample" text="hello, world" />;
          ...


          結(jié)果:
          undefined // 因?yàn)閠ext不是prototype的一個(gè)屬性
          posted @ 2007-11-02 10:17 zozilla 閱讀(636) | 評(píng)論 (0)編輯 收藏
          僅列出標(biāo)題  
          主站蜘蛛池模板: 凤山市| 剑阁县| 东乌珠穆沁旗| 浦江县| 溧阳市| 临桂县| 伽师县| 临清市| 株洲县| 镇康县| 板桥市| 五大连池市| 康定县| 崇礼县| 寻甸| 西宁市| 阳城县| 麻阳| 三原县| 灵宝市| 嵊州市| 子长县| 宜宾市| 石家庄市| 太仆寺旗| 江华| 樟树市| 吴桥县| 那坡县| 五家渠市| 龙南县| 布拖县| 高邑县| 蒙阴县| 金堂县| 防城港市| 岑巩县| 肥乡县| 清原| 广灵县| 天祝|