最近在学习js,总结了一些高级js用法
js apply()和call()的用法
https://www.cnblogs.com/chenhuichao/p/8493095.html
js模块化
#1.es6的模块化:
https://blog.csdn.net/lihongxun945/article/details/49031383
只支持静态的导入和导出,也就是说必须在编译时就能确定,在运行时才确定是不行的。为什么这么做:
1.性能,在编译阶段即完成所有模块导入,如果在运行时进行会降低速度
2.更好的检查错误,比如对变量类型进行检查
#2.AMD和CMD的区别
AMD 即Asynchronous Module Definition,中文名是异步模块定义的意思。它是一个在浏览器端模块化开发的规范。
requireJS主要解决两个问题:
1.多个js文件可能有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器
2、js加载的时候浏览器会停止页面渲染,加载文件越多,页面失去响应时间越长
require()函数在加载依赖的函数的时候是异步加载的,这样浏览器不会失去响应,它指定的回调函数,只有前面的模块都加载成功后,才会运行,解决了依赖性的问题。
CMD 即Common Module Definition通用模块定义
区别
1、AMD推崇依赖前置,在定义模块的时候就要声明其依赖的模块
2、CMD推崇就近依赖,只有在用到某个模块的时候再去require
js高级函数
1.惰性载入函数https://blog.csdn.net/xiaobianjava/article/details/50617896
2.函数柯里化https://segmentfault.com/a/1190000012145489
3.级联函数:类似于函数式编程
js面向切面编程
https://blog.csdn.net/qq_17347575/article/details/78039216
js高级技巧
变量作用域和闭包
this指针的使用,谁调他就指向谁
按值传递和按引用传递
多线程
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应用安全发展与介绍
HTTP协议与会话管理
Web应用的组成与网页的渲染
浏览器特性与安全策略:同源策略,沙盒框架,flash安全沙箱,cookie的安全策略,内容安全策略
设计模式
设计原则:开闭原则、里氏转换原则,依赖原则,接口隔离原则,合成/聚合复用原则,迪米特原则
单利模式、构造函数模式、建造者模式、工厂模式、外观模式、代理模式、观察者模式、策略模式、命令模式、迭代器模式、职责模式、适配器模式、模板方法、原型模式。