js高级程序设计有很详细的说明,这里就不做详解了,只是做个笔记和总结,方便记忆和理解
1、工厂模式:
最简单的模式,生产并返回一个object对象
function createPer(name){
var o = new Object();
o.name = name;
return o;
}
var p1 = createPer("js");
2、构造函数形式,比较常用的形式,在组件封装中经常用到。
function Person(name,age){
this.name = name;
this.age = age;
//this.name,this.age 是该对象的特权变量
}
var p = new Person("js",5);
以这种方式创建的构造函数是定义在(global)中,在浏览器中就是window对象。
我们可以用new的方法来进行对象实例化,也可以当作普通函数来调用。
Person("js",5),会添加到window对象中
3、原型模式
在原型对象prototype中定义各种变量和方法。
用这个方法定义后,每个创建的对象实例的proto都指向原型对象。
这个方法的原型语法有好几种,这里就不具体写了
4、组合使用构造函数和原型模式
这种方式是最常见的,因为可以避免很多的问题。
![这里写图片描述](https://img-blog.csdn.net/20180627203938949?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FiUzk4Nzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
5、动态原型模式
这中模式就是在构造函数初始化的时候去判断下,这里用了一个设计模式就是单例模式。
使用这种方法之后绝对不能重写,否则就会切断现有实例与新原型之间的联系。
6、寄生式构造函数
7、稳妥构造函数模式
只有在不用this和new的时候用这种方式,不做介绍了