偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Sencha Touch 2.0官方指南:如何使用"類"

移動開發(fā)
Sencha Touch 2.0采用跟Ext JavaScript 4一樣的類系統(tǒng)。這使得我們可以很輕松地在JavaScript中創(chuàng)建或繼承新的類。類系統(tǒng)提供了繼承,依賴加載,mixin,強大的配置選項等內容。

簡單來說,類是一個擁有一些屬性和方法的對象。例如:定義一個動物類,定義其名稱和功能,使得它能說話,我們只需這樣做:

  1. Ext.define('Animal', { 
  2. config: { 
  3. name: null 
  4. }, 
  5. speak: function() { 
  6. alert('grunt'); 
  7. }); 

這樣我們就定義了一個動物類,每個動物可以有一個名稱,并可以說話。要創(chuàng)建一個新的的動物,我們只需這樣:

  1. var bob = Ext.create('Animal', { 
  2. name: 'Bob' 
  3. }); 
  4. bob.speak(); //alerts 'grunt'  

在這里,我們創(chuàng)建了一個名為Bob的動物,并命令它說話。現(xiàn)在,我們已經(jīng)定義了一個類和并創(chuàng)建了一個實例,但我們不知道鮑勃是什么物種,所以讓我們定義一個人類的作為動物類的子類:

  1. Ext.define('Human', { 
  2. extend: 'Animal', 
  3.  
  4. speak: function() { 
  5. alert(this.getName()); 
  6. }); 

現(xiàn)在我們已經(jīng)從動物類繼承了一個新的的人類,因此人類獲得其所有的方法和配置。實際上,我們重寫了說話的方法,因為大多數(shù)人有足夠的智慧,說他們的名字,而不是咕嚕咕嚕地叫?,F(xiàn)在,我們創(chuàng)建一個名為Bob的人,并讓他說話:

  1. var bob = Ext.create('Human', { 
  2. name: 'Bob' 
  3. }); 
  4.  
  5. bob.speak(); //alerts 'Bob' 

你應該也注意到了上面的代碼中使用了getName方法,然而我們并沒有定義動物類的getName方法。那它來自哪里?答案是:框架自動幫每一個配置項添加了以下方法:

一個getter方法 - 如getName就是返回name的當前值。

一個setter方法 - 如getName就是為name設置一個新值。

an applier function - applyName() in this case - which is called by the setter and lets you run a function when a configuration changes

getter和setter都是自動生成的,建議大家使用它們來存取類里面的數(shù)據(jù)。ST的每一個組件都使用了getter和setter的模式,這意味著如果我們知道一個配置項,也就知道如何獲取和設置它的值了。

這也讓你的的代碼更整潔。舉個例子:如果你想在改變Bob的名字時詢問用戶。就可以定義applyName方法,它會被自動調用:

  1. Ext.define('Human', { 
  2. extend: 'Animal', 
  3.  
  4. applyName: function(newName, oldName) { 
  5. return confirm('Are you sure you want to change name to ' + newName + '?'); 
  6. }); 

我們用瀏覽器內建的confirm方法彈出了一個確認操作的對話框。如果applier方法返回的是false,那name的值將不會發(fā)生改變。

  1. var bob = Ext.create('Person', { 
  2. name: 'Bob' 
  3. }); 
  4.  
  5. bob.setName('Fred'); //opens a confirm box, but we click No 
  6.  
  7. bob.speak(); //still alerts 'Bob' 

我們已經(jīng)學習了類系統(tǒng)的這些內容:

用Ext.define來定義新的類。

用Ext.create來創(chuàng)建對象實例。例如:Ext.create('SomeClass', {some: 'configuration'})

用"extend"來繼承擴展類。

使用系統(tǒng)自動生成的getter和setter方法,這會讓代碼更整潔。

現(xiàn)在,你已經(jīng)學會如何定義和使用一個類。但類系統(tǒng)的內容遠遠不只這些。

依賴與動態(tài)加載

大多數(shù)時候,類之間都存在著依賴。我們可以使用"requires"關鍵字來引入一個被依賴的類。人類依賴動物類并擴展動物類,這種情況下并不需要特殊的說明,用"extend"就已經(jīng)表明了這種依賴關系。

  1. Ext.define('Human', { 
  2. extend: 'Animal', 
  3.  
  4. requires: 'Ext.MessageBox', 
  5.  
  6. speak: function() { 
  7. Ext.Msg.alert() 
  8. }); 

當你像這樣定義一個類的時候,ST就會檢查并異步加載Ext.MessageBox。

Ext.MessageBox也可能依賴于其他類,這些類也將在后臺自動加載。Ext.MessageBox和動物類都加載完畢后,就會定義人類。然后就可以使用Ext.create實例化"人"了。

在開發(fā)過程中,多文件可以讓我們有效地管理代碼,但應用發(fā)布后,應該盡量減少文件的數(shù)目以提高網(wǎng)絡響應速度。ST2的JSBuilder工具可以分析你的應用程序,并將你所有代碼連同你所用到的ST中的類合并成一個js文件。關于JSBuilder使用方法的介紹,請看指南的第二部分。

每種方法都有其自身的利弊,我們是否能夠取其精華,去其糟粕?答案是肯定的,在ST2里,我們已經(jīng)實現(xiàn)了這一目標。

命名約定

使用統(tǒng)一的風格來命名類、名空間和文件名有助于更好地組織代碼,保證代碼的條理性和可讀性。

1) 類

類名只能由字符和數(shù)字組成。不要在類名中出現(xiàn)數(shù)字,除非它屬于一個技術術語。不要使用下劃線,連字符,以及任何字母數(shù)字以外的字符。例如:

MyCompany.useful_util.Debug_Toolbar 不要這樣寫

MyCompany.util.Base64 這個OK

每個類都要有命名空間。用"."來為類分配命名空間,把類分配到不同的包內。例如:

MyCompany.data.CoolProxy

MyCompany.Application

***的命名空間和類名使用駱駝拼寫法,其他的都用小寫。例如:

MyCompany.form.action.AutoLoad

非框架本身的類,不要使用Ext作為***命名空間。

首字母縮略詞也應該遵循上面列出的駱駝拼寫法約定。例如:

使用 Ext.data.JsonProxy 而不用 Ext.data.JSONProxy

使用 MyCompany.util.HtmlParser 而不用 MyCompary.parser.HTMLParser

使用 MyCompany.server.Http 而不用 MyCompany.server.HTTP

2) 源文件

類名直接映射到類文件的存儲路徑。因此,每個文件對應一個類(就像java一樣)例如:

Ext.util.Observable 存儲位置為 path/to/src/Ext/util/Observable.js

Ext.form.action.Submit 存儲位置為 path/to/src/Ext/form/action/Submit.js

MyCompany.chart.axis.Numeric 存儲位置為 path/to/src/MyCompany/chart/axis/Numeric.js

其中 path/to/src 是你存儲腳本的目錄(譯者注:這里不是真的"path/to"而是你的app目錄),所有的類都應該保存在這個目錄下,并被正確地劃分命名空間。這樣Ext .require()方法才能正確地動態(tài)載入腳本文件。這樣對將來的維護和部署工作都也很會有幫助。

3) 變量和方法

跟類名一樣, 變量名和方法名只能由字符和數(shù)字組成。不要在類名中出現(xiàn)數(shù)字,除非它屬于一個技術術語。不要使用下劃線,連字符,以及任何字母數(shù)字以外的字符。

變量名和方法名應該使用首字母小寫的駱駝拼寫法。示例:

好的方法名: getHtml() getJsonResponse() parseXmlContent()

不好的方法名:getHTML() getJSONResponse() parseXMLContent()

好的變量名:isGoodName base64Encoder xmlReader httpServer

4) 屬性

除靜態(tài)屬性以外的類的屬性,其命名方式跟方法和變量的一樣。

靜態(tài)屬性全部用大寫命名,例如:

Ext.MessageBox.YES = "Yes"

Ext.MessageBox.NO = "No"

MyCompany.alien.Math.PI = "4.13"

責任編輯:佚名 來源: 移動Web開發(fā)社區(qū)
相關推薦

2011-10-26 10:21:40

Sencha Touc組件

2011-10-26 10:32:05

Sencha Touc數(shù)據(jù)視圖

2012-01-10 13:21:33

Sencha Touc使用data包

2011-10-18 09:49:40

新特征Sencha Touc

2011-09-02 15:18:49

Sencha Touc

2011-07-25 16:21:22

Sencha touc

2011-10-26 10:12:53

Sencha Touc布局

2011-09-02 15:42:55

Sencha Touc布局

2011-09-30 14:15:10

Sencha ToucSencha Touc

2011-09-02 15:58:38

Sencha Touc布局

2012-05-01 20:57:26

Sencha Touc

2011-10-18 08:59:46

Sencha ToucHTML5

2011-11-16 13:14:02

Sencha TouciOS本地應用

2011-07-26 09:41:50

Sencha Touc特性HTML 5

2010-11-22 10:31:17

Sencha touc

2011-09-02 16:08:09

Sencha ToucAPI文檔

2011-07-25 15:55:21

Sencha ToucHtml 5

2011-09-05 11:23:26

EclipseSencha Touc框架

2011-09-02 16:42:51

Sencha ToucWeb應用

2011-09-05 10:20:21

Sencha ToucAPP
點贊
收藏

51CTO技術棧公眾號