Ext 2 学习笔记(二):Ext命名空间

 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是立即运行的(因为最后还有个括号),所以myNameSpace.app得到的是这个函数返回的结果。
11  //  因为函数内定义的变量是不能被外部访问的,利用这种方式可以把变量定义为私有的方式。
12  //  因为返回的是一个对象,所以app得到的结果就是一个对象,所以就可以通过.运算符得到这个返回对象的变量和方法,
13  //  这样就可以利用这点申明为公用的变量。
14  myNameSpace.app  =   function () {
15       //  私有变量
16       var  btn1;
17       var  privVar1  =   11 ;
18      
19       //  私有函数
20       var  btn1Handler  =   function (button, event) {
21           //  这里很巧妙,虽然表面上说是私有函数可以访问私有变量,可是这里利用了函数栈的概念,
22           //  即函数可以访问上一层函数定义的变量,这里的privVar1就是上一层函数中定义的变量了。
23          alert('privVar1 = +  privVar1);
24          
25           //  因为这里的this指向的window对象,所以这里的this.btn1Text为undefined.
26           //  当把它赋给一个对象的时候,this指向这个对象,也就是像下的调用一样。    
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               //  调用btn1Handler函数,这里函数里的this指向的是window
43              btn1Handler();
44          }
45      };
46  }();
47 
48  Ext.apply(myNameSpace.app, {
49      btn1Text:  " Hello, Ext 2.0 " ,
50      
51       //  这里所说的重写特权函数也无法访问私有变量或私有函数,其实是因为他不在函数上下文,无法访问函数上一层定义的变量而已。
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 + ' "  发生在行: '  +  e.lineNumber);
62          }
63      }
64  });

你可能感兴趣的:(Ext 2 学习笔记(二):Ext命名空间)