javascript面向對象(一)


 

 

javascript是弱類型,直譯式的面相對象編程語言。

在之前我們說過
var a = 123; 在這里a是整數 但是我們可以給a重新復制為 a="你好"; 在這個過程中變量a 的值發生了改變,對應的類型也不再是數值類型,我們稱這種特性為弱類型。
直譯式指的是不需要通過其他方式,瀏覽器可以直接編譯解析的方式為直譯式。
那么面相對象是什么呢oo?
簡單來說 面相對象要拆分為兩個不同的單詞進行描述 面相-對象 面相是個很好理解的單詞,就是對着,面對 我們可以說面向世界,面向未來 ,這里面主要的就是對象這個詞語。
面向對象:對現實世界的理解與抽象,是計算機編程技術發展到一定階段的產物。
ok 上訴描述有點抽象,我們來舉個栗子
 
 

 

大家都知道計算機最終的目的是通過電腦來解決現實中的事物與功能。那我們現在要用計算機來描述一個航班信息。
大家思考下,我們首先需要個飛機,然后需要一些旅客。
 

 

 

 
那在這里面我們當然不能在電腦里裝一個飛機或者一堆人(二次元可以試試)。那怎么辦呢?
在這里我們通過一些描述信息 如 string字符串 或number數值來描述一個真實飛機。
 
 

 

 
那在這里,我們就通過使用js的內置數據類型來描述了一個飛機的特性,那么小伙伴會有個問題~ 這里哪有對象 哪有面相? ok我們繼續向下來處理。
 
上面的代碼我們只是描述了一個簡單的飛機,如果我們有兩架飛機怎么辦呢?

 

 
我們可以通過定義額外的變量來進行描述,當然這種方式很不理想,因為我無法確定我定義的是一個飛機還是以個拖拉機或者三輪子。這個時候就需要我們面相對象來進行登場了
 
----------------------------------------- 我是前戲分割線 --------------------------------------------
 
面向對象:通過將現實世界中具有相同屬性和行為的事物抽取為一個類,一個類的實例,我們稱之為對象的實例。
 
類:具有相同屬性和行為的事物的抽象體。
 
對象: 一個類的具體實現和顯示的真實例子。
 
首先我們搞清楚類的概念,什么是類?
 
類的概念有點抽象和空虛,比如我們可以說 小明 和 小紅 是 人,那么在這個過程中, 人就是類,小明和小紅就是類的實體,也就是我們常說的對象。
 
類具有兩個特殊的實現方式,我們稱之為屬性和方法。
屬性 :一般用來描述我們看得見摸得着的抽象。如色彩、身高、體重、名字等
方法(行為) :方法一般指動態的操作行為。比如跑步、說話、上學、寫作業、泡妹紙...
類的特點:類一般是抽象而成,也就是說本身不具有實際的行動意義,需要一個實際的例子來用來對他的內部進行操作。
對象:通過關鍵字new或其他方式創建,繼承了類的屬性和行為的真實例子進行操作。
我們的編程就是定義好一個類,然后通過對實例對象的操作進行工作,這種方式就是面向對象。
 
大家可以想象下我們在之前接觸的對象概念 如 String、Number 他們都是類的概念定義,而一個new String('123')、new Number(123)就是這個類的實體,我們一直以來也只是對着實體操作,因為面向對象概念非常復雜,我們后期慢慢進行。
 
//ok 我們來進行第一件事情,創建一個類
 
//首先我們創建一個人的類
//來思考下 人有什么用的共性呢?

 

 

 
屬性: 頭 手 腳 眼睛 衣服...
行為: 吃飯 唱歌 跑步 運動
 
在javascript中,並沒有對類的創建提供單獨的方式,所以我們只能使用function函數來進行創建。
首先了解第一種方式:
工廠模式:
通過function定制一個創建對象的模板,在運行結束后返回一個定制好的對象,具有一定的屬性和行為。
 

 

 
但是在這里面我們有一個問題,那就是無法告知別人當前對象是哪一種類。
 
構造模式:
構造模式通過使用函數+new關鍵字分別創建類和實例

 

 
在這里我們注意點,一般使用構造模式進行創建時,函數名稱首字母一般大寫(行業規范),
那么在使用new關鍵字時,這里面發生了幾個變化
1.new+函數后會創建返回一個當前函數類型的對象
2.函數內部的this指向更改為指向當前的 new 函數,也就是新創建的對象本身
3.生成constructor 用於聲明指向當前對象的構造函數
4.新創建的對象生成一個__proto__的屬性 指向構造函數的prototype
 
原型構造模式:
如果將屬性和行為都放在函數內部中進行創建,不利於位於,尤其是在業務比較復雜的情況下,所以又提供了原型模式。

 

  
動態原型模式
有些時候我們想要一個類繼承另一個類的屬性,那么這種時候我們就可以使用動態原型模式

 

 
在上述代碼中通過創建Person類,boy類,Girl類。
在Boy和girl中 ,通過使用person替換this創建私有屬性和方法(但是不會繼承原型對象,原型對象只有在new關鍵字才會繼承)。
 
組合模式
通過將原型模式和構造模式一起使用

 

 面向對象先簡單介紹基礎知識到這里 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM