构造函数注意的问题

本篇文章介绍构造函数需要注意的问题事项,

1、在自定义构造函数中首字母需要大写。

2、构造函数不写return 

首先返回一个基本数据类型

 

打印结果没有返回。我们如果写返回一个数字,打印结果也是没有的。

但是如果我们在构造函数中,写返回一个对象,那么打印结果将会变化,代码块如下所示:

 

 如果在构造函数中写了返回一个对象,那么我们的构造函数将失去意义了,也就没有了实例化对象的意义了。

总结,在构造函数中,如果写return,返回一个基本数据类型是没有任何反应的,但是如果返回一个复杂数据类型,那么结果就会变化了,那么就不会与之前的构造函数有关系了。

3、构造函数能当做普通函数使用吗?

   我们先调用构造函数,不实例化对象,打印结果是undefined,代码块如下图所示:

 为什么打印结果的undefined?原因是,上面的构造函数就是一个普通函数,且没有返回值,打印结果当然是undefined了。

  当然了,细心的小伙伴可能会问了,既然是普通函数,那么普通函数中的this又是指向谁的呢?

在上述代码中,一个普通函数被调用了,就相当于将这个函数挂载到window这个大对象当中,所以上面代码中的this是指向window的。代码演示如下图所示:

 打印结果如下所示:

上面代码之所有打印为张三,应为上面我们已经说过一个普通函数被调用了,就相当于将这个函数挂载到window这个大对象当中,也就是说window中有了name这个属性。

 

4、面向对象中的this是指向谁的呢?

    上面的代码铺垫是告诉读者们,构造函数是可以当做一个普通函数去试用的,但是在构造函数中添加了this关键字,那么一定是想通过实例化new对象形式去试用的。代码演示如下所示:

 

展开打印结果就是实例化的对象。

在实例化new的过程中,会在内存中的堆区生成一个实例化对象(复杂类型在堆区中开辟空间来创建实例对象的),所以构造函数中this的指向就是指向实例化的这个对象。而实例化对象中同样也有name属性。 (只要构造函数中写了什么属性方法,那么实例化的对象中都会有这些属性和方法)

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值