🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 语言知识 1. 编辑语言总体分为两大类:静态语言 动态语言 静态语言优点:在编译时就能发现类型不匹配的错误,明确了数据类型,编译器还能进一步优化 静态语言缺点:代码冗长 动态语言优点:代码简洁,编写更快 动态语言缺点:增加类型不确定的风险 2. 鸭子类型:即只关注对象是否拥有某个方法,而不去关注是哪个对象,不管是鸡还是鸭,只要都会同一项技术就可以 ### 多态思想 1. 把“做什么 和 谁去做”分离开来 2. 导演案例:导演喊"action",如果是面向过程写法,需要向不同的角色都说一句,如果是面向对象过程, 提前封装好方法,导演呼叫开始,叫一次就可以了,各个角色开始做自己的事情 ``` function renderMap( map ) { if (map.show instanceof Function) { map.show() } } function google() {} function baidu() {} let obj = { show() { console.log('google') } } let obj2 = { show() { console.log('baidu') } } Object.setPrototypeOf(google, obj) Object.setPrototypeOf(baidu, obj2) renderMap( google ) renderMap( baidu ) ``` ### 封装 1. 封装思想:封装的目的是为了隐藏信息 2. 一般封装是:封装数据、封装实现这两种 ### 封装数据 1. 通过闭包实现私有变量,本质是通过作用域的特性去封装 ### 1. 单例模式 1. 保证一个类只有一个实例,并提供一个访问它的全局访问点 ### 2. 发布订阅与观察者模式:也称为观察者模式 1. 它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变,所有依赖它的对象都将得到通知 2. 在JS中,事件模型也是一种替代传统的发布订阅者模式 ### 3. 适配器模式 1. 适配器模式主要的作用是解决两个软件之间的不兼容问题 2. 现实生活中的适配器:充电器转换头、USB转换头等 2.