摘要:內(nèi)容簡介,關(guān)于面向?qū)ο螅P(guān)于面向物理模型,示例,總結(jié),關(guān)于面向?qū)ο笾械拿嫦驅(qū)ο笫且粋€老生常談的問題,可能有人問你的話你也能霹靂啪啦的說一通,比如最常見的,對象的三要素對象的名字對象的屬性對象的方法例子對象名示例對象屬性對象方法或者稍微高級一
內(nèi)容簡介: 1,關(guān)于面向?qū)ο? 2,關(guān)于面向物理模型 3,示例 4,總結(jié)
1,關(guān)于面向?qū)ο?/strong>
javascript中的面向?qū)ο笫且粋€老生常談的問題,可能有人問你的話你也能霹靂啪啦的說一通,比如最常見的,
對象的三要素:對象的名字、對象的屬性、對象的方法
//例子: function obj(){ //對象名: obj this.desc=“示例” //對象屬性 desc this.getDesc=function(){ //對象方法 getDesc return this.desc; } }
或者稍微高級一點:對象的封裝、對象的繼承,對象的實例化
這里內(nèi)容太多,略過,可以自己去查資料, 留個坑,回頭自己寫一篇文章填上 -_-|||,畢竟說太多就跑題了 填坑一:
繼承
還有一點,就是盡量用面向?qū)ο蟮乃季S去解決問題
//例子-錯誤的寫法: if(a){} else if(b){} else if(c){} else{} //例子-面向?qū)ο蟮膶懛ǎ?let obj = { a:function(){}, b:function(){}, c:function(){}, d:function(){} } //item = a || b || c || d ... let result = obj[item](); //錯誤的寫法 function(a,b,c,d,e){} //正確的示范 let param = {a:"a",b:"b",c:"c"...} function(param){} ...
其實以上都不是我要說的,這里我更偏向于把對象看作一件現(xiàn)實當(dāng)中的“事物”,即物理上存在的東西,然后把它抽象出來,就是我們需要的東西
2,關(guān)于面向物理模型
面向物理模型這個說法我不知道有沒有人說過,反正我是這么理解的,就這么說吧,
簡單點的物理模型
//例如 電燈對象:{ 名字:電燈, 方法1:開, 方法2:關(guān), 配置:充電 || 換電池 ? } //備注:當(dāng)然可能還有其它的,我這里只挑主要的說
復(fù)雜點的物理模型
//例如 滑動的滑塊:{ 名字:滑塊A, 初始速度:v, 加速度:a, 地面摩擦力:f, 加速度持續(xù)時間:t, 可選 :{ 質(zhì)量:m, 半徑:r }, 計算:{ 運(yùn)動距離:s, 運(yùn)動時間:T, ....... } }
//備注:我不是來幫你們復(fù)習(xí)物理題的哈,這確實是一個模型,當(dāng)你寫一些動畫效果時應(yīng)該算是常用的物理模型
混合物理模型
其實說了那么多,然而我們用到的時候,基本上都是兩種模式的混合, 所以在實際抽象模型(數(shù)學(xué)建模?)的時候,分塊拆分是很好的選擇
3,示例
我知道,只談理論不寫代碼都是耍流氓,雖然我很擅長.......不耍流氓,所以,這里就用代碼來說話
比如我這里要寫一個多功能選擇器的插件,類似IOS的日歷選擇器,只是不僅僅是支持日歷,可以自定義內(nèi)容,
基于簡單物理模型------靜態(tài)-------數(shù)據(jù),樣式,配置參數(shù)
var picker=function(options){ this._modelData= options.modelData || {}; //填充數(shù)據(jù) this._lineHeight=options.lineHeight || 40; //行高 this._character=options.character || “-”; //間隔符號 this._showLines=options.showLines || 3; //顯示行數(shù),必須為奇數(shù) this.getSelectOpti //獲取選中的選項信息 //do sth } this.renderHtml=function(){} //渲染插件 } picker.prototype.init=funtion(){} // ......... //備注:簡要代碼,方面理清思路
基于復(fù)雜物理模型------動態(tài)------動作,改變,計算
.....{ this._lineHeight = options.lineHeight || 48;//px *此處lineHeight需要在樣式中設(shè)置! this._moveDistance = options.moveDistance || 1;//每次滾動的單位 px ,加快滾動速度,與回彈速度 this._moveDouble = options.moveDouble || 2;// 慣性系數(shù) 數(shù)字越大 拖動后滾動的距離越遠(yuǎn) /*this._dragSpeed = options.dragSpeed || 1; //慣性系數(shù)*/ this._moveRate = options.moveRate || 500;// 1~1000 移動頻率 數(shù)字越大,頻率越高 this._character = options.character || null;//間隔符號 this._showLines = options.showLines || 3;//默認(rèn)顯示行數(shù) this._fza = options.fza || 0.02; //阻力系數(shù) 單位時間內(nèi)速度減小的值 this._resistance = options.resistance || 0.10;// 當(dāng)滾動超出邊界時受到阻力 } //........ picker.prototype.scrollToIndex=function(){} //滑動到第N個 picker.prototype.slideY=function(){} //滑動動畫 包括勻速運(yùn)動,勻減速運(yùn)動等 picker.prototype.autoFitIndex=function(){} //自動貼合 picker.prototype.updatePicker=function(){} //更新數(shù)據(jù) picker.prototype.scrollPrev=function(){} picker.prototype.scrollNext=function(){} picker.prototype.stopCallBack=function(){} //..........
完整代碼 :
Github
4,總結(jié):
其實這玩意說白了就是一個插件,一個地址,一個demo的事情, 可是我卻能寫這么多,由此可見吹牛逼(理論知識和抽象能力)的重要性。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91389.html
摘要:函數(shù)式編程與面向?qū)ο缶幊叹幊痰谋举|(zhì)之劍目錄編程的本質(zhì)讀到兩篇文章寫的不錯綜合摘錄一下復(fù)合是編程的本質(zhì)函數(shù)式程序員在洞察問題方面會遵循一個奇特的路線。在面向?qū)ο缶幊讨校惢蚪涌诘穆暶骶褪潜砻妗? 函數(shù)式編程與面向?qū)ο缶幊蘙5]:編程的本質(zhì) 之劍 2016.5.6 01:26:31 編程的本質(zhì) 讀到兩篇文章,寫的不錯, 綜合摘錄一下 復(fù)合是編程的本質(zhì) 函數(shù)式程序員在洞察問題方面會遵循...
摘要:前言這里筑夢師是一名正在努力學(xué)習(xí)的開發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡書記錄下自己的學(xué)習(xí)歷程個人學(xué)習(xí)方法分享本文目錄更新說明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開發(fā)學(xué)習(xí)路線很長知識拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學(xué)習(xí)的iOS開發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡書記錄下自己的學(xué)習(xí)歷程...
閱讀 4380·2021-11-24 10:24
閱讀 1414·2021-11-22 15:22
閱讀 2044·2021-11-17 09:33
閱讀 2451·2021-09-22 15:29
閱讀 523·2019-08-30 15:55
閱讀 1662·2019-08-29 18:42
閱讀 2740·2019-08-29 12:55
閱讀 1780·2019-08-26 13:55