Javadream

          A long way and a dream.
           1 var btn1Text = "Hello, world.";
           2 
           3 // 填充圖片的本地引用
           4 Ext.BLANK_IMAGE_URL = '../ext/resources/images/default/s.gif';
           5 
           6 // 申明名字空間,用于下面的定義。
           7 Ext.namespace("myNameSpace");
           8 
           9 // 定義名字空間。
          10 // 注意這里,因為function是立即運(yùn)行的(因為最后還有個括號),所以myNameSpace.app得到的是這個函數(shù)返回的結(jié)果。
          11 // 因為函數(shù)內(nèi)定義的變量是不能被外部訪問的,利用這種方式可以把變量定義為私有的方式。
          12 // 因為返回的是一個對象,所以app得到的結(jié)果就是一個對象,所以就可以通過.運(yùn)算符得到這個返回對象的變量和方法,
          13 // 這樣就可以利用這點(diǎn)申明為公用的變量。
          14 myNameSpace.app = function() {
          15     // 私有變量
          16     var btn1;
          17     var privVar1 = 11;
          18     
          19     // 私有函數(shù)
          20     var btn1Handler = function(button, event) {
          21         // 這里很巧妙,雖然表面上說是私有函數(shù)可以訪問私有變量,可是這里利用了函數(shù)棧的概念,
          22         // 即函數(shù)可以訪問上一層函數(shù)定義的變量,這里的privVar1就是上一層函數(shù)中定義的變量了。
          23         alert('privVar1=+ privVar1);
          24         
          25         // 因為這里的this指向的window對象,所以這里的this.btn1Text為undefined.
          26         // 當(dāng)把它賦給一個對象的時候,this指向這個對象,也就是像下的調(diào)用一樣。    
          27         alert('this.btn1Text=+ this.btn1Text);
          28     };
          29     
          30     // 公共空間
          31     return {
          32         btn1Text: 'Button 1',
          33         
          34         init: function() {
          35             btn1 = new Ext.Button({
          36                 renderTo: 'btn1-ct',
          37                 text: this.btn1Text,
          38                 handler: btn1Handler,
          39                 scope: this
          40             });
          41             
          42             // 調(diào)用btn1Handler函數(shù),這里函數(shù)里的this指向的是window
          43             btn1Handler();
          44         }
          45     };
          46 }();
          47 
          48 Ext.apply(myNameSpace.app, {
          49     btn1Text: "Hello, Ext 2.0",
          50     
          51     // 這里所說的重寫特權(quán)函數(shù)也無法訪問私有變量或私有函數(shù),其實(shí)是因為他不在函數(shù)上下文,無法訪問函數(shù)上一層定義的變量而已。
          52     init: function() {
          53         try {
          54             btn1 = new Ext.Button({
          55                 renderTo: 'btn1-ct',
          56                 text: this.btn1Text,
          57                 handler: btn1Handler,
          58                 scope: this
          59             });
          60         } catch (e) {
          61             alert('錯誤: "' + e.message + '" 發(fā)生在行: ' + e.lineNumber);
          62         }
          63     }
          64 });
          主站蜘蛛池模板: 舒城县| 太原市| 金塔县| 明星| 文化| 新干县| 西林县| 甘谷县| 莲花县| 长子县| 白城市| 阿鲁科尔沁旗| 永和县| 区。| 镇远县| 逊克县| 深泽县| 内乡县| 台东市| 萍乡市| 大同县| 鸡东县| 尼玛县| 杭锦后旗| 韶关市| 武义县| 屯昌县| 南安市| 鲁甸县| 唐海县| 仁怀市| 灵川县| 新竹市| 广东省| 佛冈县| 金塔县| 舞钢市| 开封县| 盱眙县| 吉林市| 太保市|