js 外掛程式封裝的一點理解

2021-09-28 16:11:30 字數 805 閱讀 5002

先說結論

利用函式作用域,建立私有函式及私有變數

在學習如何封裝類或者函式時,亦或是學習寫外掛程式的時候。常常是看其他優秀**。

順嘴一提,我看到的例子是從jq外掛程式庫、和張鑫旭的個人**來的。

對於jq的封裝。

$.fn.你的外掛程式名

(function())()

立即執行函式,主要是為了使用函式作用域的特性,你的**塊中的變數不會洩露給全域性,不會被其他人影響。

一般會在前面加分號。因為()()可以被引擎識別執行,也是執行函式。若上面有人加正好寫了函式,又沒有結尾。引擎會理解錯你的意思的。

對於js的封裝

function yourname(){}yourname.prototype.littername

這裡就談到物件導向的內容了。乙個function只做一件事。而yourname.prototype.littername

這裡面不一定只有乙個函式,常常會被抽離出私有函式,就是只是提供給littername呼叫的函式。抽離出來的函式放在**?

只要能被引用到,管它放**呢。其實也沒有錯。但是,如果放全域性有這麼乙個考慮

萬一人家用了同樣的名字,可是會被覆蓋掉你的功能或值的,那這個引用就沒效了。

怎麼辦?不讓別人碰咯,利用函式的作用域,利用閉包,都可以達到這個效果。

像這樣(function())()

其實兩者差別不大,打好基礎,了解為什麼。千變萬化也能很快的理解到位。

以上。

js物件函式的一點理解

前端vue recentjoblist style width 100 column prop name label name width 280 column column prop startdate label startdate width 500 column column prop en...

UIWebView 的一點理解

uiwebview可以用來方便得顯示url request uiwebview 是從uiview繼承而來的。所以本身並沒有實現scroll。當開啟乙個urlrequest之後,uiwebview 自動建立乙個uiscrollview add 到uiwebview的layer 當開啟當前頁面中的lin...

QThread的一點理解

白天在工作中用到的qthread,發現了一些問題,晚上學習了一下,感觸頗深,遂記錄一下 嘻嘻 1 qthread exec 如果不在run 中最後一行寫出來,普通訊號槽可以用,但是qtimer或qtcpsocket或程序類qprocess的訊號槽不能用!2 在標頭檔案裡定義的類,是屬於主線程的。比如...