其實,不需要搞明白面向過程程式設計和物件導向程式設計的區別,只需要明白物件導向的特點:變數必須有家長,萬事家長做主.慢慢就能理解物件導向的優劣.
1.變數有所屬.
常規方式
var a = 1let b = ['1', '2']
const c = function (name)
console.log(a, b, c)
常規的變數申明,這些變數作用於自己的作用域內.這種方式有一些缺陷.
其一,在同乙個作用域內,同名變數會導致前乙個變數被覆蓋.假如現在引入了兩個不同的js檔案,裡面各自都有乙個叫check的函式,那麼後引入的函式會覆蓋前乙個函式.那麼這時候我就得去修改函式名,可能就會導致開發量變大.
其二,不方便管理.首先,如果沒有函式名沒有語義化,或者語義比較模糊,那我們看到它的第一眼,並不知道它的作用在哪兒.那麼維護**的時候我們,必須圍繞整個流程看一遍以確認需要維護的變數.其次,假如多處用到相同的幾個變數,那我們只能全部複製貼上一遍,在需要修改的地方再進行修改.復用性不高.
其他暫且不提.為了解決上述問題,我們引入了物件導向程式設計的方案.
物件導向
const obj =}console.log(obj.a, obj.b, obj.c)
最明顯的特點就是,同樣的變數,我把它們放進了obj這個物件中,它們被約束在obj中.
好處1:同乙個檔案,我可以重複命名變數(作為盒子的物件不可同名)
const obj =}console.log(obj.a, obj.b, obj.c)
const obj1 =
}console.log(obj1.a, obj1.b, obj1.c)
可以看見,你不需要想破腦袋去想6個變數名,只要3個變數名就行,只要同乙個物件中不要有重複的屬性名就行.
好處2.我可以對不同的變數進行分類,已明確其在**的作用,從而方便查詢維護
面向過程:申明的時候,我們並不知道這6個變數有啥區別,實際console的時候再回頭乙個個去找,需要修改的時候再修改
var a = 1let b = ['1', '2']
const c = function (name)
var d = 1
let e = ['1', '2']
const f = function (name)
console.log(a, b, c)
settimeout(() => , 1000)
物件導向:6個變數已經提前分類好了,後續一看,就很清楚這6個變數分別再**發揮作用.
const obj =}console.log(obj.a, obj.b, obj.c)
const obj1 =
}settimeout(() => , 1000)
2.家長需做主
由於變數變成了物件的屬性,所以沒法直接使用.需要經過物件(家長)才能獲取.比如上面的obj.a,而直接拿a是拿不到的.這也就是變數名可以重複的原因.畢竟obj.a和obj1.a不是同乙個東西.這就是
C 物件導向程式設計初步
1,使用const 指標 const int pone 指向整型常量的指標,指向的值不能修改 int const ptwo 指向整型的常量指標,指向的值可以修改,但該指標不能再指向其他變數 const int const pthree 指向整型常量的常量指標 summarize summary 訪問...
3 物件導向程式設計初步
如何開汽車 事務比較簡單,可以用線性的思維去解決 面向過程 物件導向 1.踩離合 駕駛員 2.掛擋 汽車 3.踩油門,放離合 駕駛員開汽車!4.開了 car.start 如何製造汽車 事物比較複雜使用簡單的線性思維無法解決 面向過程 物件導向 1.造車輪?車輪 2.造發動機?買橡膠到馬來西亞找到橡膠...
物件導向程式設計1
包 用於組織和管理類的目錄結構,同乙個包中不同出現同名類 包名 識別符號.識別符號.識別符號.package 打包命令,指明該類所在的包,該命令必須為 的第一行,同時必須與目錄結構相同 若在乙個包中需要使用其他包中的類,需要匯入包 import 包名.類名 使用包的原則 1.同乙個包中往往包含功能相...