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)題  
          主站蜘蛛池模板: 彰化市| 五台县| 大石桥市| 惠水县| 沧源| 盐亭县| 宜黄县| 苗栗县| 曲沃县| 上栗县| 罗源县| 驻马店市| 增城市| 固安县| 怀仁县| 通辽市| 和顺县| 绥江县| 绵阳市| 济源市| 浑源县| 吉隆县| 郑州市| 武清区| 耿马| 德庆县| 鸡西市| 武定县| 郑州市| 和田市| 海安县| 泾川县| 和林格尔县| 屯门区| 富裕县| 连云港市| 武城县| 南丹县| 华池县| 城步| 健康|