1.面向对象
(1):工厂模式
工厂模式可以传递参数,主要缺点是无法识别对象的类型,
因为创建对象都是使用Object的原生结构函数来完成的;
(2):构造函数模式
要创建Person实例,必须使用new关键字,以Person函数为构造函数,传递参数完成创建对象
1.创建一个对象
2.将函数的作用域赋予对象(this指向这个新对象)
3.执行构造函数的代码
4.返回该对象
缺点: 创建对象的时候,会重复创建函数的实例
(3)构造函数加原型
构造函数模式用于定义实例的属性而原型模式用于定义方法和共享的属性,
组合模式还支持向构造函数传递参数
constructor:Person 原型字面量方式将对象的constructor变为object,此外强制指回Person
(4)动态原型模式: 组合模式中实例属性与共享方法(由原型定义)是分离的,
动态原型模式将所有的构造信息都封装与构造函数中,又保持组合的优点,
其原理就是通过判断构造函数的原型中是否已经定义共享的方法或属性,
如果没有定义,否则不在执行定义的过程;该方式只原型上方法或属性只定义一次,
将所有构造过程都封装在构造函数中;