<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用Ext.extend進行繼承的一個有趣的問題

      在Ext的使用過程中,偶然發現了一個有趣的問題, 和大家共享一下。 先看如下代碼:

      // 定義一個基類, 一個數組成員arr,和一個空函數init
      var BaseClass = Ext.extend(Ext.util.Observable, {
      	arr: [],
      	init: Ext.emptyFn
      });
      
      // 定義一個子類,繼承自BaseClass,并重寫init方法, 向數組arr中添加一個1
      var SubClass1 = Ext.extend(BaseClass, {
      	init: function() {
      		this.arr.push(1);
      	}
      });
      
      // 再定義一個子類, 也繼承自BaseClass,并重寫init方法, 向數組arr中添加一個2
      var SubClass2 = Ext.extend(BaseClass, {
      	init: function() {
      		this.arr.push(2);
      	}
      });
      
      function extTest() {
      	var c1 = new SubClass1();
      	c1.init();
      	alert(c1.arr); // 這里得到的應該是1, 結果也確實是1, 沒錯
      
      	var c2 = new SubClass2();
      	c2.init();
      	alert(c2.arr); // 這里得到的應該是一個2, 但是實際結果卻是1,2 ,有趣的問題出現了
      }

      在執行extTest函數時,收到的兩個alert分別是1和1,2 ,而且,如果不斷的執行extTest函數,得到的值會不斷的增加, 這是什么原因呢?問題肯定是處在Ext.extend方法上,加載debug版本的腳本, 對這個方法進行單步跟蹤,發現最終問題出現在Ext.override函數上, 看圖:

      image

      看來在那個for循環之中,只是將overrides中的各個屬性進行簡單賦值操作, 但是,對于本例中出現的數組, 賦值只能傳遞對數組的引用, 也就是說SubClass1和SubClass2將共享一個數組,因為他們引用的是同一個數組,怪不得得到的結果會與期望的不一致呢。

      當然, 對于上面的代碼適當進行修改, 既可以得到預期的值

      var BaseClass = Ext.extend(Ext.util.Observable, {
      	arr: null,
      	init: function() {
      		this.arr = []; // init arr here.
      	}
      });
      
      var SubClass1 = Ext.extend(BaseClass, {
      	init: function() {
      		SubClass1.superclass.init.call(this); // call base class 's init function 
      		this.arr.push(1);
      	}
      });
      
      var SubClass2 = Ext.extend(BaseClass, {
      	init: function() {
      		SubClass2.superclass.init.call(this); // call base class 's init function
      		this.arr.push(2);
      	}
      });
      
      function extTest() {
      	var c1 = new SubClass1();
      	c1.init();
      	alert(c1.arr); 
      
      	var c2 = new SubClass2();
      	c2.init();
      	alert(c2.arr);
      }

      雖然這只是一個很小的問題,但是卻不容忽視,我就犯了一個這樣的“錯誤”,郁悶了好長時間才發現原因, 因此給大家提個醒。

      posted @ 2008-03-22 16:52  張志敏  閱讀(5696)  評論(13)    收藏  舉報
      主站蜘蛛池模板: 福利一区二区不卡国产| 国产激情av一区二区三区| 国语做受对白XXXXX在线| 扒开女人内裤猛进猛出免费视频| 久久国产免费观看精品3| 亚洲二区中文字幕在线| 在线观看精品视频网站| 久青草国产在视频在线观看| 日韩免费无码人妻波多野| 国产精品美女免费无遮挡| 国产精品有码在线观看| 女人腿张开让男人桶爽| 五月天天天综合精品无码| 日韩精品一区二区三区蜜臀 | 亚洲欧洲美洲无码精品va| 中文字幕国产精品第一页| 内射一区二区三区四区| 国产熟睡乱子伦视频在线播放| 国产精品va无码一区二区| 久久9精品区-无套内射无码| 亚洲欧美不卡视频在线播放| 天天躁日日摸久久久精品| 国产免费午夜福利在线观看| 男女扒开双腿猛进入爽爽免费看 | 亚洲成a人片在线观看日本| 色综合视频一区二区三区| 日韩有码精品中文字幕| 26uuu另类亚洲欧美日本| 亚洲丰满熟女一区二区蜜桃| 别揉我奶头~嗯~啊~的视频| 成人无码一区二区三区网站| 影音先锋男人站| 日韩人妻精品中文字幕| 免费看婬乱a欧美大片| 中文字幕一区日韩精品| AV秘 无码一区二| 欧美日韩不卡视频合集| 久在线视频播放免费视频| 国产成人高清亚洲综合| 国产欧美一区二区日本加勒比| 人妻少妇精品视频无码综合|