个人想法: 对于面向对象编程的实现方式, 无论是 像java python c++等语言中的<code>类</code>,或者说js中的<code>原型继承</code>, 说到底都只是一种实现方式而已, 就像下雨天可能绝大多数人的习惯是打伞, 但是我穿雨衣也同样可以, 好与不好因人而异, 因需求而异
<code>工厂:</code> 批量生产物品, 不对用户暴露生产细节, 用户只需要会使用就行
同样, <code>工厂模式</code> 也是这样一个原理, 不会对用户暴露创建逻辑, 并且是通过封装特定的接口来创建新的对象
**步骤: **
新建一个对象
定义属性和方法
return出去
在ES6之前, 我们约定俗成的将 首字母大写的函数 定义为构造函数
使用构造函数来模拟类会使得每个方法会在每个实例都创建一次, 也就意味着不同实例的同名方法实际上是不一致的
简单回顾一下原型和原型链:
每个函数都有一个<code>prototype</code>属性, 指向一个原型对象
每个对象都有一个<code>__proto__</code>属性, 指向其构造函数的<code>prototype</code>
因此利用原型和原型链, 我们可以不必在构造函数中定义对象的信息, 而是将这些信息直接添加到原型对象中
是最常见、使用最广泛的方式
顾名思义: 就是将构造函数模式和原型模式结合起来使用, 取其精华, 剔其糟粕
构造函数模式定义实例属性
原型模式定义共有属性和方法
动态原型模式将所有信息都封装在了构造函数中,初始化的时候,通过检测某个应该存在的方法时候有效,来决定是否需要初始化原型
if判断只会在初次调用构造函数时才会执行, 之后再调用不会执行
这种模式的基本思想就是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新建的对象
这种模式与工厂模式没有什么不同, 非得要找出个不一样, 该模式用了<code>new</code>关键字, 并且把封装的函数首字母大写,当构造函数叫
所谓 稳妥 就是指 没有公共属性, 而且方法也不引用this
仅记录自己的学习总结,如有错误,还请评论指正~