JavaScript基础-构造函数

1 构造函数:

-       构造函数就是一个普通的函数,创建方式和普通函数没有区别

-       不同的是构造函数名称的首字母我们习惯大写

-       构造函数和普通函数的调用方式不同,构造函数需要添加关键字new,而普通函数直接用函数名称调用。

 

 

 

我们可以看到,通过构造函数创建的对象名称不再是object了,而是Person对象和Cat对象,这样能更好的区分不同的对象。

2 构造函数的执行流程:

-       1.立刻创建一个新的对象

-       2.将新建的对象设置为函数中的this

-       3.逐行执行函数中的代码

-       4.将新建的对象作为函数返回值返回

 

 

 

还是上面的这个图,我们可以看到构造函数本身并没有返回值,但是我们在打印的时候,确得到了对象,说明在构造函数的执行过程中,第一件事就是立即创建新的对象(其实就是this),当打印的时候进行返回(因为此时函数中没有内容,所以整个过程是执行了1、2、4两步

 

3 向构造函数中添加属性:

 

 

 

4 修改构造函数为工厂模式(提高复用性)

 

5 检查一个对象是否是某个构造函数的实例(检查对象是否所属某个类)

 

 

我们可以看到,persion1对象是Persion构造函数(工厂)创造的人。

 

 

 

 

 

persion1对象不是Cat构造函数(工厂)创造的猫。

 

 

注意,Object是所有类(构造函数)的祖先类,万物皆对象,所以不管是哪个构造函数创造的对象,都是Oject的子类。

 

6 优化构造函数-抽取构造函数中定义的方法到全局(提高复用性)

 

 

如图,红框中方法定义在构造函数中,那么每次new构造函数的时候,都会在内存中创建一个全新的hanshnu方法,我们可以将其提取到全局实现复用。

 

修改代码为:

 

 注意:function Person(name.person,age)里不包含hanshu这个参数

我们可以看到执行效果和前面都是完全一样的,但是我们优化了内存。

 

注意:属性不要再优化到全局了,因为new Persion一次就是一个全新的对象(人),每个人的属性是不同的,而唯一相同的是hanshu这个方法,所以抽取的必须是所有对象共有的不能是每个对象专有的。

posted @ 2021-03-22 17:02  Hhhr  阅读(313)  评论(0编辑  收藏  举报