JS中的常见的设计模式
1.单例模式
2.工厂模式
3.构造函数模式
4.原型模式
单例模式:
其实就是一个对象,我们把这对象称为命名空间。
普通单例,是没有私有的内容,别的人员可以任意更改你的内部属性。
高级单例模式,使用的这个单例的人是改变不了内部变量的。用的人每次都会重新执行该高级单例,每次获取的都是初始值。
工厂模式:
就是一个普通函数,适用于那些批量生产单例的情况。
构造函数模式:
new执行函数的时候,会开辟新的作用域,形参赋值,变量提升。
然后把函数中的this指向了一个新开辟的堆内存。
在这之后,再去操作this的时候,其实就是在操作这个堆内存。
最后把this返出去。
工厂模式和构造函数模式的区别?
构造函数模式不需要自己创造一个对象。
构造函数模式不需要自己主动return内容。
原型模式:
每一个实例都有一个__proto__的属性,指向所属类的原型。
每一个函数都有一个prototype属性,指向自己的原型。
每一个类的原型上都有一个 constructor属性,指向所有类(函数)本身。
作用域链:
变量的查找机制,变量的查找机制,先看变量是不是自己私有的,不是的话就去上级作用域去查找,一直找到window位置。
原型链:
属性的查找机制,先在自己身上查找,没有的话就通过__proto__向自己所属类的原型上查找。一直找到基类的原型,有的话就返回对应的值,没有的话就是undefined。