简单了解JS中的对象和数组

81 阅读3分钟

简单了解对象

对象就是一个数据的集合(复杂数据),对象属于复杂数据类型(引用数据类型) JS 的数据类型分为基本数据和复杂数据。

创建对象 字面量方式创建对象

 var obj = {
        name: 'QF',
        age: 18
    }
    console.log(obj)

内置构造函数创建

var obj1 = new Object() // 创建一个空对象
console.log(obj1)

对象内对于 键(key) 的要求

  1. 推荐使用 符合变量命名规范和规则的
  2. 可以使用数字作为 key
  3. 可以使用特殊符号

对象数据类型的操作(增删改查)两种语法

  • 点语法

      var obj = {
          name:'你好'
      }
      //增加 (对象.新key = 值)
      obj.age = 123
    
      //删除 (delet obj.key)
      delete obj.name
      console.log(obj)
    
      //修改(对象.key = 新值)
      obj.age = 123456
    
      //查询(对象.key)
      console.log(obj.age)
    
  • 中括号语法(数组语法)

      var obj1 = {
          name:'你好'
      }
      // 查 
      console.log(obj1['name'])
    
      // 改
      obj1['name'] = '不好'
      console.log(obj1)
    
      // 增
      obj1['age'] = 123
      console.log(obj1)
    
      // 删
      delete obj1 ['name']
      console.log(obj1)
    
  • 两者的差异

    1. 对象 的 key 符合命名规范的时候 都可以
    2. 出现纯数字 为 key 或者 特殊符号 @# 我们需要使用 中括号语法
    3. 当出现变量的时候(想用变量作为 key) 也需要使用 中括号语法

for in 循环遍历对象

遍历对象就是拿到对象的所有 键值对

    var obj = {
        name: 'QF',
        a: 123,
        b: 456,
        c: 789
    }

    for (var key in obj) {
        console.log(key, obj[key])
    }

数组数据类型

存放一些数据的集合

var arr = [100, 200, 300, 'a', 'b', 'c', true, false, undefined] // 注意是 中括号, 不是大括号
console.log(arr)

创建数组数据类型

  • 使用字面量的方式创建数组
  1. 字面量

     var arr = [1, 2, 3, 4, 5]
     console.log(arr)
    
  • 内置构造函数创建数组
  1. 内置构造函数

     var arr1 = new Array()  // 空数组
     console.log(arr1)
    
     var arr2 = new Array(5) // 创建一个长度为 5 的数组(虽然有长度, 但是实际的值为 空)
     console.log(arr2)
    
     var arr3 = new Array(5, 10) // 创建一个有内容的数组, 第一个值为 5 第二个值为 10
     console.log(arr3)
    

数组的 length 属性

   数组的 length代表了 数组的 成员数量

*  语法: 数组.length
  
   var arr = [1, 2, 3, 4, 5, undefined]
   console.log(arr.length)

数组的 索引 概念

数组的索引就代表了 当前数据 在 数组的 第几个 位置(注意!!! 下标 从 0开始)

var arr = [1, 2, 3, 4, 5]
// 下标    0  1  2  3  4
console.log(arr)
// 通过 下标获取数组对应的成员
console.log(arr[0]) // 1    获取数组的第一个成员
console.log(arr[4]) // 5
console.log(arr[arr.length - 1])    // 相当于 arr[4] ---> 5

for 循环遍历数组

拿到数组的每一个成员

     var arr = [1, 2, 3, 4, 5]
    // 下标    0   1 2  3  4

    for (var i = 0; i < arr.length; i++) {
        console.log(arr[i])
    }

数据类型之间的区别

存储的区别

1. 基本数据类型: 存储在栈内存中, 变量内部就是实际的值
2. 引用数据类型: 变量存储在栈内存中, 变量内部存储的是 指向 堆内存 的 地址(对象实际的值, 存储在 堆内存中)

赋值的区别

1. 基本数据类型: 是值的传递
可以理解为, 将我自身的值 复制一份 给到另一个变量, 后续修改另一个变量时 与我自身没有任何关系

2. 引用数据类型:是地址的传递
可以理解为, 将自身的 地址 复制一份 给到另一个变量, 后续修改互相会有影响

比较的区别

 1. 基本数据类型
     比较时, 是拿变量实际的值, 去做对比
 2. 引用数据类型
    比较时, 是拿引用地址做对比, 判断是不是执行一个地址

传参的区别

  1. 基本数据类型
      是 值 的传递, 将自身的值 复制一份 传递给函数的形参
  2. 引用数据类型
      是 地址 的传递, 将自身的地址 复制一份 传递给函数的形参