数组构造函数和数组实例的区别

数组构造函数和数组实例的区别

在这里我们需要区分一下什么是构造函数,什么是实例,什么是对象。

  1. 对象是什么?

    面向对象编程(OOP):具有灵活性,代码可复用性,高度模块化等特点。

    • 对象是单个实物的抽象。
    • 对象是一个容器,封装了对应属性和方法。
    • 属性是对象的状态,方法是对象的行为。
  2. 构造函数

    创建一个新的 Function 对象。直接调用此构造函数可以动态创建函数。

  3. 对象

    String、Number、Boolean、Array、Object、Function 等等都是 JS 内置的构造函数。在 JS 中,由于一切皆接对象,所以它们也可以称为内置对象。

  4. Array 和 Array.prototype 的区别

    Array 是 JS 内置的构造函数(内置对象),通俗地讲,它是创建数组的构造函数,它的本质是函数,所以它不是一个数组。

    Array.prototype 是 Array 的一个属性,叫做原型,这个原型的值是一个对象,对象里面保存着数组对象的方法和属性。

    例如被数组构造函数 new 出来的新数组就被称为数组实例。

    let arr = new Array();

    这个 arr 上具有Array.prototype的所有方法。

    Array.formArray.ofArray.isArray是数组构造函数上的方法。

    而数组实例上的方法就有很多了,可以在控制台通过arr.__proto__或者Array.prototype查看。