1.在函数中传入window或this
目的:减少作用域链的查询
Vue传入this是为了兼容node,node中没有window而是global
2.函数中传入undefined
undefined是一个变量,可以进行赋值;null是关键字不能赋值,也不需要查询作用域链
3.defineProperty使属性不可更改
将属性在原型链直接挂载vue.prototype.$router,属性可以随意修改;
使用Object.defineProperty(vue.prototype, "$router", { get: function() {} })属性只定义get方法不定义set,属性将不可以被更改
4.模块支持检测
前端模块化:
民间:amd,cmd,umd
官方:es6 -> import
nodejs:commonjs
源码构建的三种模式
1.工厂模式(jQuery)
核心:写一个工厂方法,当需要某个对象时就调用工厂获取到对象。
使用场景:当需要大量产出不同对象的时候,如dom操作。
2.建造者模式
核心:把原型类拆分成不同模块,各个模块独立开发,最后组合上来
使用场景:多人合作的复杂的类,如Vue类
3.函数式
核心:tree-shaking,按需打包
使用场景:编写大而全的函数库
代码质量提升小技巧
1.享元模式
核心:提出两段相似代码的不同点(if-else)
1797

被折叠的 条评论
为什么被折叠?



