数据类型和伪数组

在javascript中,除了5中原始数据类型之外,都是对象Object

基本数据类型
  • String
  • Boolean
  • Number
  • Undefined
  • Null

基本数据类型存储的是值,也就是直接把基础数据放在基础数据类型的变量中进行存储.

引用数据类型
  • Object
    • Array
    • Date
    • RegExp
    • Function

引用数据类型存储的是栈地址,由这个地址指向堆的位置.读取存在堆当中的数据.

对象与数组的关系

所有JavaScript的内置构造函数都是继承自 Object.prototype,通过new Array()或者[]创建出来的数组对象,都会拥有Object.prototype的属性值.

    let arr = new Array()
    let arr2 = []
    console.log(arr) // 拥有__proto__ 属性
    console.log(arr2) // 拥有__proto__ 属性
    console.log(arr.__proto__ === arr2.__proto__) // false

上面我们把[]new Arrar()得到的数组进行打印发现,都带有__proto__属性,对两个数组的__proto__进行比较,得到的是true,说明两种方式都指向同一构造函数的protoType属性

另外,我们又通过2个变量分别实例化一个数组和一个对象,打印每个对象发现也都带有构造函数的__proto__属性,当然,通过实例化出来的变量带有构造函数的prototype相关联属性__proto__属性.所以,arr.proto === obj.proto得到的值也应当为false.

    let arr = new Array()
    let obj = new Object()
    console.log(arr) // 拥有__proto__ 属性
    console.log(obj) // 拥有__proto__ 属性
    console.log(arr.proto === obj.proto) // false
伪数组

定义:
拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)
并不具有数组的具体方法

var dataList = {
    length: 3,
    "0": "first",
    "1": "second",
    "2": "third"
};

伪数组是一个Object,而真数组是一个Array

你可能感兴趣的:(数据类型和伪数组)