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