成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

  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ù)人有足夠的智慧,說他們的名字,而不是咕嚕咕嚕地叫。現(xiàn)在,我們創(chuàng)建一個名為Bob的人,并讓他說話:

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

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

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

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

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的模式,這意味著如果我們知道一個配置項,也就知道如何獲取和設(shè)置它的值了。

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

  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. }); 

我們用瀏覽器內(nèi)建的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)的這些內(nèi)容:

用Ext.define來定義新的類。

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

用"extend"來繼承擴展類。

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

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

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

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

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

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

命名約定

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

1) 類

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

MyCompany.useful_util.Debug_Toolbar 不要這樣寫

MyCompany.util.Base64 這個OK

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

MyCompany.data.CoolProxy

MyCompany.Application

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

MyCompany.form.action.AutoLoad

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

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

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

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

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

2) 源文件

類名直接映射到類文件的存儲路徑。因此,每個文件對應(yīng)一個類(就像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目錄),所有的類都應(yīng)該保存在這個目錄下,并被正確地劃分命名空間。這樣Ext .require()方法才能正確地動態(tài)載入腳本文件。這樣對將來的維護和部署工作都也很會有幫助。

3) 變量和方法

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

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

好的方法名: 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ū)
相關(guān)推薦

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本地應(yīng)用

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應(yīng)用

2011-09-05 10:20:21

Sencha ToucAPP
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩av在线不卡 | 国产欧美日韩一区二区三区在线 | 色综合色综合色综合 | 国产成人精品综合 | 久久久青草婷婷精品综合日韩 | 亚洲精品久久久久久国产精华液 | 久久久国产精品入口麻豆 | 中文字幕一区二区三区不卡在线 | 欧美日韩网站 | 欧美日韩看片 | 午夜电影福利 | 国产免费拔擦拔擦8x高清 | 国产激情91久久精品导航 | 久久久久国产精品免费免费搜索 | 成人欧美一区二区三区白人 | 亚洲成人一区 | 另类在线 | 国产精品精品久久久 | 欧美一级特黄aaa大片在线观看 | 羞羞视频网站免费看 | 精品久久久久久久人人人人传媒 | 99在线精品视频 | 干狠狠| 一区二区三区免费观看 | 自拍偷拍在线视频 | 国内精品视频在线 | 日韩一区二区精品 | 国产精品视频免费看 | 国产精品久久av | 国产精品久久久爽爽爽麻豆色哟哟 | www.久久 | 欧美精品第一区 | 成人精品一区二区三区 | 97日日碰人人模人人澡分享吧 | 精品成人 | 特级特黄特色的免费大片 | 欧美激情一区二区三区 | 天天干天天想 | 国产日韩一区二区三免费 | .国产精品成人自产拍在线观看6 | 三区在线 |