1、通过工厂的方式来创建对象,通过这种方式可以大批量来创建对象,使用函数来批量生产,在函数内部创建一个对象,然后传入相应的属性,并将对象返回,每次调用就可以生成一个对象。在传入是,对象的属性值不能写死,以参数的方式来传入,在调用时,传入相应的参数即可。
注意:使用工厂的方法来创建对象都是使用Object这个构造函数,所以创建的对象都是Object这个类型,导致我们无法区分出多种不同类型的对象,这种方法一般不使用
2、通过构造函数的方式来批量创建对象:
-构造函数:构造函数就是一个普通的函数,创建方式和普通函数没有区别,不同的是构造函数习惯上首字母大写
- 构造函数是专门用来创建对象的函数
- 一个构造函数我们也可以称为一个类,使用同一个构造函数创建的对象我们称之为一类对象
- 通过一个构造函数创建的对象,我们称该对象是这个构造函数的实例
- 通过同一个构造函数创建的对象,我们称为一类对象
- 构造函数就是一个普通的函数,只是他的调用方式不同:
如果直接调用,它就是一个普通函数
如果使用new来调用,则它就是一个构造函数
- 例子:
function Person(){
}
- 构造函数的执行流程:
1.立刻创建一个新的对象(即使用new来调用函数;一出现new就创建对象)
2.将新的对象作为函数的上下文对象(this),在构造函数中可以通过this来引用新建的对象
3.逐行执行函数中的代码
4.将新建的对象作为返回值返回
3、instanceof 用来检查一个对象是否是一个类(即构造函数)的实例
- 语法:对象 instanceof 构造函数
- 如果该对象时构造函数的实例,则返回true,否则返回false
- Object是所有对象的祖先,所以任何对象和Object做instanceof都会返回true
4、当方法在构建函数中定义时,构建函数每执行一次就会创建一个新的方法,即所有实例的方法都是唯一的。这就导致了每执行一次构造函数就会创建一个新的方法,而且每次新建的方法都是一摸一样的,这是没有必要的,完全可以使所有的对象共享同一个方法。
做法:将方法的定义放到构造函数外面去。
为该改变之前:
做修整后: