单例设计模式 (Singleton Pattern)
利用多个命名空间创造某类的多个不同的实例,实例之间相互独立,互不影响
表现形式
let obj = {
xxx :'xxx',
...
}
在单例设计模型中,obj也叫做命名空间[NameSpace]
作用
把描述同一事物的属性特征进行分组归类(储存到同一堆内存中),使不污染其他变量或冲突
高级单例模式 ***
let nameSpace = (function(){
function fn ()={
//...
}
return {
fn:fn
}
}()
原理
先形成私有作用域(一个不会销毁的栈内存),在其中创造一个堆内存并返回
好处
可以在其中创造很多变量/函数,而最终只暴露出我们需要使用的对象(一种模块化编程思想)
工厂模式 (Factory Pattern)
- 把实现相同功能的代码进行封装,以此实现批量生产
- 低耦合高内聚
function createObj (name,age){
let obj = {};
obj.name = name;
obj.age = age;
return obj;
}
let p1=createObj("zs",18);
let p2=createObj("ls",19);
面向对象
- 对象 (万物皆对象)
- 类(对象的具体细分)
- 实例(类的具体一个)
构造函数
function Fn (){...}
let f1 = new Fn();
let f2 = new Fn();
let a = 12;
let b = new Number (12) ;
typeof(a) //-->number
typeof(b) //-->Object
//两种方式都创造出number的实例,字面量方式创造出的是基本类型,而构造函数创造出的是引用类型;但都能使用类提供的属性方法
看这篇详解构造函数