JS 中构造函数和普通函数的区别

1、构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写

2、构造函数和普通函数的作用不一样(构造函数用来新建实例对象)

3、调用方式不一样。

  • 普通函数的调用方式:直接调用 person();
  • 构造函数的调用方式:需要使用new关键字来调用 new Person();

4、this 的作用

构造函数,内部用this 来构造属性和方法,并指向实例

    function Person(name) {
      this.name = name;
      this.sayFuck = function () {
        console.log("Fuck")
      };
    };

5、执行流程

构造函数的执行流程(构造函数被 new 之后,会发生什么)

  1. 立刻在堆内存中创建一个新的对象
  2. 将新建的对象设置为函数中的this
  3. 逐个执行函数中的代码
  4. 将新建的对象作为返回值

普通函数

  1. 创建一个堆内存,形成一个独立的作用域,
  2. 逐个执行函数中的代码。
  3. 没有指定返回内容,默认是 undefined

6、返回的内容不一样

  • 普通函数,因为没有返回值,所以为undefined
  • 构造函数,构造函数会马上创建一个新对象,并将该新对象作为返回值返回

7、用 instanceof 可以检查一个对象是否是一个类的实例,是则返回true;

    function Person(name) {
      this.name = name;
      this.sayFuck = function () {
        console.log("Fuck")
      };
    };

    let Child = new Person
    console.log(Child instanceof Person); // true
    console.log(Child instanceof Function); // false
    console.log(Person instanceof Function); // true
    console.log(Child instanceof Object); // true
posted @ 2022-03-17 16:13  真的想不出来  阅读(131)  评论(0编辑  收藏  举报