向面试官解释: js中普通函数和构造函数的区别

1. 函数的首字母书写方式不同

构造函数的首字母通常是大写的, 而普通函数首字母通常是小写; 这样就是为了区分构造函数和普通函数, 让程序员在调用构造函数的时候加上new关键字.

	<script>
      // 普通函数
      function fn1() {
        
      }

      // 构造函数
      let fn2 = new Person()
    </script>

2. 函数的作用不同

构造函数的作用使用来创建实例对象的.

	<script>
	// 通过构造函数Array(), new调用创建实例对象arr
      let arr = new Array()
      console.log(arr instanceof Array);
      console.log(Object.prototype.toString.call(arr));
    </script>

在这里插入图片描述

3. 调用方式不同

普通函数直接调用, 而构造函数是用new来调用.

4. 函数内部this的指向也不同

1. 普通函数直接调用的话, 函数内部this的指向是window
2. 构造函数内部的this指向是new出来的实例对象
	<script>
      // 普通函数
      function fn() {
        console.log(this);
      }
      fn()

      // 构造函数
      function Person() {
        console.log(this)
      }
      const p1 = new Person()
      console.log(p1)
    </script>

在这里插入图片描述

5. 默认返回值不同

1. 普通函数return出来的数据, 如果没有手动设置的话, 默认是一个undefined
2. 构造函数return出来的数据, 是一个对象 "[Object Object]"
    <script>
      // 普通函数
      function fn() {

      }
      const res1 = fn()
      console.log(res1) // 默认返回undefined

      // 构造函数
      function Person() {

      }
      const p1 = new Person() // 默认返回的是p1实例对象
      console.log(p1)
    </script>

在这里插入图片描述

6. 函数的执行过程不同

1.普通函数一般是按照顺序执行(异步代码除外)
2.构造函数会在内部自动生成一个对象, 改变this指向, 赋值, 最后就是return这个对象
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值