最近在學(xué)習(xí)js,總結(jié)了一些高級js用法
js apply()和call()的用法
https://www.cnblogs.com/chenhuichao/p/8493095.html
js模塊化
#1.es6的模塊化:
https://blog.csdn.net/lihongxun945/article/details/49031383
只支持靜態(tài)的導(dǎo)入和導(dǎo)出,也就是說必須在編譯時就能確定,在運(yùn)行時才確定是不行的。為什么這么做:
1.性能,在編譯階段即完成所有模塊導(dǎo)入,如果在運(yùn)行時進(jìn)行會降低速度
2.更好的檢查錯誤,比如對變量類型進(jìn)行檢查
#2.AMD和CMD的區(qū)別
AMD 即Asynchronous Module Definition,中文名是異步模塊定義的意思。它是一個在瀏覽器端模塊化開發(fā)的規(guī)范。
requireJS主要解決兩個問題:
1.多個js文件可能有依賴關(guān)系,被依賴的文件需要早于依賴它的文件加載到瀏覽器
2、js加載的時候?yàn)g覽器會停止頁面渲染,加載文件越多,頁面失去響應(yīng)時間越長
require()函數(shù)在加載依賴的函數(shù)的時候是異步加載的,這樣瀏覽器不會失去響應(yīng),它指定的回調(diào)函數(shù),只有前面的模塊都加載成功后,才會運(yùn)行,解決了依賴性的問題。
CMD 即Common Module Definition通用模塊定義
區(qū)別
1、AMD推崇依賴前置,在定義模塊的時候就要聲明其依賴的模塊
2、CMD推崇就近依賴,只有在用到某個模塊的時候再去require
js高級函數(shù)
1.惰性載入函數(shù)https://blog.csdn.net/xiaobianjava/article/details/50617896
2.函數(shù)柯里化https://segmentfault.com/a/1190000012145489
3.級聯(lián)函數(shù):類似于函數(shù)式編程
js面向切面編程
https://blog.csdn.net/qq_17347575/article/details/78039216
js高級技巧
變量作用域和閉包
this指針的使用,誰調(diào)他就指向誰
按值傳遞和按引用傳遞
多線程
https://www.cnblogs.com/woodk/articles/5199536.html
Concurrent.Theadjs
WebWork
https://www.ibm.com/developerworks/cn/web/1112_sunch_webworker/
https://segmentfault.com/a/1190000015597029
https://www.cnblogs.com/Tohold/p/9173137.html
跨域
web安全
Web應(yīng)用安全發(fā)展與介紹
HTTP協(xié)議與會話管理
Web應(yīng)用的組成與網(wǎng)頁的渲染
瀏覽器特性與安全策略:同源策略,沙盒框架,flash安全沙箱,cookie的安全策略,內(nèi)容安全策略
設(shè)計模式
設(shè)計原則:開閉原則、里氏轉(zhuǎn)換原則,依賴原則,接口隔離原則,合成/聚合復(fù)用原則,迪米特原則
單利模式、構(gòu)造函數(shù)模式、建造者模式、工廠模式、外觀模式、代理模式、觀察者模式、策略模式、命令模式、迭代器模式、職責(zé)模式、適配器模式、模板方法、原型模式。