前言:隨着js應用場景的普遍,「能用js的場景最終都將使用js解決」,足以說明它的魅力,所以掌握js是必不可少的。javascript
回顧一下以前使用js 的方法java
場景:ajax
這個佈局分爲三部分,上,左,右,點擊左部按鈕會進行ajax請求,返回不一樣的界面瀏覽器
返回a界面,a界面會引用a.js緩存
返回b界面,b界面會引用b.js函數
js是客戶端腳本,所以加載js文件以後,用戶沒有清除緩存以前文件就是一直存在的,所以存在一些緩存問題。佈局
問題1:當a.js加載事後,在b.js中可使用a.js的方法和行爲,這樣就會存在干擾,尤爲是定時器行爲this
當a.js加載以後就會每隔1s執行一次isAlert();由於使用的是ajax,因此即便你已經離開了這個界面仍然會每隔1s執行一次isAlert();如圖對象
問題2:如上所試,a.js和b.js有兩個同名函數,如果在c頁面同時要用到這兩個函數,就比較麻煩,要麼在新建一個c.js,複製兩個函數並改爲不一樣的名字而後引入。blog
秉承着不搞事不舒服的原則,開始折騰之旅
分析:若只有問題1,以最笨的方法來想,就是寫個js每一次請求以前刪除本地瀏覽器的全部緩存,可是這樣形成的問題有點大,最突出的問題就是ajax是局部刷新,刷新後的頁面是嵌入在原頁面以內,所以來講原界面的一些依賴js是不能被刪除的。同時給問題2的解決產生了較大難度。根據萬事萬物皆對象的原則,參考java的獲得一些思路
爲何不能將每一個js文件當作一個類呢?
一個js文件就是一個對象,對象.屬性,對象.行爲。一樣的如果能封裝,拆包,則就能完美的作到互不干擾
begin
在a頁面:
<a href="javascript:prseonA.isAlert()">AisAlert</a>
在b頁面
<a href="javascript:prseonB.isAlert()">BisAlert</a>
這樣一同將問題2解決
在c頁面
<a href="javascript:prseonA.isAlert()">AisAlert</a> <a href="javascript:prseonB.isAlert()">BisAlert</a>
抽象:有許多杯子,有許多人,如果沒有標明全部者,常常會發生拿錯的狀況,尤爲是當兩個杯子外表相近的時候。當標明所屬的時候就不會發生這個問題。從口渴的時候直接去拿杯子,變成去拿本身的杯子。
以上的寫法是在加載文件的時候自動建立了對象
修改成如下
function prseonA(){ this.isAlert=function () { alert("說不上愛別說謊,就一點喜歡"); } }
<a href="javascript:new prseonA().isAlert()">AisAlert</a>
總結:將’一切皆對象‘從理解化爲實用