50、JavaScript 构造函数

当我们想要去创建一个对象时,定义好相关的属性和功能。但是如果我创建的另外一个对象时,它具备了和我第一个创建的对象中有相似的属性和功能的话,大部分人的想法可能就是复制粘贴第一个对象的创建过程如下图:
 
但是如果我创建多个对象具有一些相同属性和方法的话,使用这种方法,无疑造成代码冗余。解决这种问题的办法就是封装创建对象的函数
步骤:

1、 创建一个空对象;

2、 为该对象增加属性和方法;

3、 返回该对象;
 
上述封装创建对象的函数过程与工厂模式类似

工厂模式:

1、 原料2.加工3.出厂凡是满足上述三个步骤创建对象的函数,我们把他称为工厂方法;

官方函数创建对象

官方函数创建与工厂方法创建区别:

1、 官方函数通过new以后才变成对象,工厂方法没有new;
 

工厂模式每一个创建出来的对象独有一套函数(因为每返回一个新对象都是对应的一个新地址)

new的作用

如果我们某一函数,使用new运算符调用

1、 当前函数中this指向新创建对象;

2、 自动完成原料操作和出厂操作;

使用new调用的函数称为构造函数,构造函数可以构造对象。
注:构造函数一般情况下首字母大写(与普通函数区分)
工厂模式优化1:使用new调用
 
prototype原型:

prototype:原型对象

概念:每一个函数上,都有一个原型对象prototype
 
作用:用在构造函数上,我们可以给构造函数的原型prototype添加方法。如果我们将方法添加到构造函数的原型prototype对象上,构造函数构造出来的对象都可以共享该方法
 
混合法:新创建对象方法共享

工厂模式优化2:新创建对象方法共享
 
案例:创建一只狗