需要封裝的原因:1、通過封裝可以減少代碼的冗余,使代碼看起來不復(fù)雜,減少不必要的代碼;2、對象只用對外提供與其它對象交互的必要接口,可以對內(nèi)部數(shù)據(jù)提供不同級別的保護(hù),以防止程序中無關(guān)部分意外的改變或錯誤使用了對象的私有部分,可提升安全性。
本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。
JavaScript為什么要封裝
封裝是面向?qū)ο蟮娜齻€基本特征之一,將現(xiàn)實世界的事物抽象成計算機領(lǐng)域中的對象,對象同時具有屬性和行為(方法),這種抽象就是封裝.
大家在日常開發(fā)過程中,具有相同處理邏輯的代碼通常會進(jìn)行函數(shù)的封裝來減少代碼的冗余,使代碼看起來更優(yōu)雅美觀,那么
當(dāng)多個實體對象他們擁有相同的一些屬性和行為(方法)時,自然也要把這些相同的屬性和行為抽象出來,減少不必要的代碼。
封裝的重要特性:數(shù)據(jù)隱藏。
對象只對外提供與其它對象交互的必要接口,而將自身的某些屬性和實現(xiàn)細(xì)節(jié)對外隱藏,通過這種方式,對象對內(nèi)部數(shù)據(jù)提供了不同級別的保護(hù),以防止程序中無關(guān)的部分意外的改變或錯誤的使用了對象的私有部分。這樣就在確保正常交互的前提下,保證了安全性,不需要關(guān)心對象實現(xiàn)的方法即可使用這個對象。
函數(shù)(function)–最簡單的封裝
函數(shù)對任何語言來說都是一個核心的概念。通過函數(shù)可以封裝任意多條語句,而且可以在任何地方、任何時候調(diào)用執(zhí)行。
如何封裝: 將零散的的語句寫進(jìn)函數(shù)的花括號內(nèi),成為函數(shù)體,然后就可以調(diào)用了。
未封裝代碼:
var body = document.getElementsByTagName("body")[0]; var h1 = document.createElement("h1"); body.style.backgroundColor = "green"; h1.innerText = "綠了"; body.appendChild(h1);
缺點:
-
易被同名變量覆蓋–因為在全局作用域下聲明的變量,容易被同名變量覆蓋
-
立即執(zhí)行–解析器讀取到此處立即執(zhí)行
封裝代碼:
function makeGreen() { var body = document.getElementsByTagName("body")[0]; var h1 = document.createElement("h1"); body.style.backgroundColor = "green"; h1.innerText = "綠了"; body.appendChild(h1); }
優(yōu)點:
-
避免了全局變量–因為存在函數(shù)作用域(函數(shù)作用域畫重點,以后要考)
-
按需執(zhí)行–解析器讀取到此處,函數(shù)并未執(zhí)行,只有當(dāng)你需要的時候,調(diào)用此函數(shù)即可
-
提高代碼重用性
【