面向对象的程序设计(二)--创建对象

●Object构造函数

●对象字面量

●工厂模式

●构造函数模式

●原型模式

●动态原型模式

●寄生构造函数模式

●稳妥构造函数模式

●Object构造函数

面向对象的程序设计(二)--创建对象_第1张图片

●对象字面量

面向对象的程序设计(二)--创建对象_第2张图片


使用上述两者的方法会有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。

●工厂模式(早期人们使用工厂模式来解决上述两者方法存在的缺点问题,但是工厂模式有个缺点就是没有解决对象识别的问题即怎样知道一个对象的类型))

面向对象的程序设计(二)--创建对象_第3张图片

●构造函数模式(分为原生构造函数(如Object、Array等)自定义构造函数)

记住:自定义构造函数要善用this方法!!!

面向对象的程序设计(二)--创建对象_第4张图片
自定义构造函数

上述的工厂模式Person()函数和自定义构造函数createPerson()存在以下不同之处,且以这种方式定义的构造函数是定义在Global对象(在浏览器中是window对象)中

面向对象的程序设计(二)--创建对象_第5张图片

构造函数始终都应该以一个大写字母开头,而非构造函数则应该以一个小写字母开头。

面向对象的程序设计(二)--创建对象_第6张图片

构造函数属性(constructor):

对象的constructor属性最初用来标志对象类型的。但是,提到检测对象类型,还是instanceof操作符要更可靠一些

面向对象的程序设计(二)--创建对象_第7张图片


面向对象的程序设计(二)--创建对象_第8张图片
面向对象的程序设计(二)--创建对象_第9张图片
但是工厂模式有个缺点就是没有解决对象识别的问题(即怎样知道一个对象的类型),如上通过instanceof构造函数返回true,而工厂模式返回false

创建自定义的构造函数意味着将来可以将它的实例标识为一种特定的类型;而这正是构造函数模式胜过工厂模式的地方。

你可能感兴趣的:(面向对象的程序设计(二)--创建对象)