JS 构造函数 基础

构造函数

在这里插入图片描述
这就是最简单的一个构造函数,习惯上首字母大写,其实和一般的函数没有什么区别
但是,最大的区别是在对象新建的时候
构造函数需要使用new关键字
而普通函数却不需要使用,就比如下图
在这里插入图片描述
接下来说说我们为什么要使用构造函数
上节在工厂方法中发现,通过工厂方法创建的对象都是Object类型的,让我们很难区分我们创建的对象是什么类型。
比如我创建一个动物,它是Object类型
我创建一个人物,它也是Object类型
所以我们需要用到构造方法来加以区分
我们先来看下面这张图骗的运行效果

在这里插入图片描述
在这里插入图片描述
很明显 它是Person类型的,也就是现在我们可以通过构造函数创建可以区分的类型。
接下来我们再来看构造函数执行的流程:
1.立刻创建一个新的对象
2.将新建的对象设置为函数中的this,所以在构造函数中可以使用this引用新建的对象
3.逐行执行函数中的代码
4.将新的对象作为返回值返回在这里插入图片描述
运行结果:在这里插入图片描述

可以看出构造函数中的this指向了新建对象,所以p.name会输出程序员1

但是在给p.name赋值的时候,我们是在构造函数中进行的,假如我们需要创建n个对象,那么我们就需要写n个赋值语句,this.name=“…”…,又产生了冗余,占用了大量空间,所以我们采取传参的形式代替这种复杂的方式
如下图:
在这里插入图片描述
在这里插入图片描述
通过这种方法我们就可以快速的创建多个对象

再来看下面的例子:
在这里插入图片描述

在构造函数内部添加了一个函数,输出自己自定义的一些东西。
p p1 p2 三个对象同时都有这个方法
也就是每执行一次就会创建一个新的setage方法,执行999次,就会创建999次这样的方法,所以我们需要对这个写在构造函数内部的函数进行优化
如下
在这里插入图片描述
我们将构造函数内部的函数放到了全局作用域当中,但是,此时又有问题 就是,将这个函数放在了全局作用域当中的话,会污染了全局作用域的命名空间,而且定义在全局作用域中也很不安全,所以我们需要使用原型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值