创建函数专门来构造对象
我们可以创建一个对象专门用来创建对象
即写一个函数,里面先创建对象即var obj=new Object()
然后里面为对象添加属性,即我们在函数里面设置属性值为形参,方便我们调用这个函数创建对象的时候好改变其中的属性
然后记得函数的最后设置返回值为这个对象,然后就可以用这个函数来创建对象了
如下:
属性名不能设置为形参
我们这样创建对象就能省去很多代码
但是这样的方法无法分辨我们创建的对象类型,当我们打印这些对象名的时候打印的都是object,所以我们接下来可以用构造函数
构造函数
何为构造函数?
构造函数是我们自己设置的一个函数,跟普通的函数没什么区别,那为什么叫做构造函数呢?因为我们调用这个函数的方法比较特殊,我们这个构造函数是用于构造对象的
构造函数的执行流程
立刻创建一个新的对象
将新建的对象设置为函数中的this,在构造函数中可以使用this来引用新建的对象
逐步执行函数中的代码
将新建的对象作为返回值返回
具体如下:
这里在浏览器上面打印就能看出对象的类型,就是构造函数的名称,使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数称为一个类简单来说构造函数就是类
看,我们这里设置了一个gouzao
函数,但是注意,构造函数一般习惯上首字母大写,我这里忘记了,构造函数里面用this
来代表被构造的对象,然后通过this
来向对象添加属性,后面直接var 对象名=new 构造函数()
,注意这里为什么这个函数能定义对象呢?最主要就是函数前面的new
,一旦用了new
就会在内存空间中开辟一个位置,就是创建一个对象,然后再后面的函数对这个对象进行初始化
当然我们这里面也可以设置属性值为形参,让构造对象的时候可以进行多样化
我们将通过该构造函数创建的对象称为该构造函数的实例,或者叫该类的实例
注意
不要搞窝里斗,不要设置构造函数名即类名跟对象名一样
instanceof
作用:
instanceof用于判断一个对象是不是某个类的实例
语法:
对象名 instanceof 类名
返回值:
是的话返回true
不是的话返回false
如下:
注意所有的对象都是Object
类的后代,所以,只要是个对象,他就是Object
的实例
这里obj
对象是咱们前面就设置过的Gouzao
类的对象
再来总结一下this
当以函数的形式调用时,this是window
当以方法的形式调用时,那么谁是这个方法的主子,即有这个方法的对象,this就是谁
当以构造函数调用时,this就是新创建的那个对象