【Java script基础学习】对象 - 数组

本文详细介绍了JavaScript中的对象和数组的基本概念、创建方式及操作方法,包括对象的键值对、数组的增删改查以及各种数组方法如push、shift、unshift、pop、slice、splice、sort、reverse、concat和join。此外,还讨论了计算机内存存储机制中的栈和堆,以及引用传递和值传递的区别。
摘要由CSDN通过智能技术生成
  1. 对象:一种对客观事物的描述,将客观事物以逻辑数据的形式进行描述的过程
    • 无序数据的打包,object对象,标志是{}
    • 有序数据的打包,array对象,标志是[]
  2. 对象的本质(组成)
    • 键值对数据组成
      • 键和值一一对应,成对出现
      • 键和值之间使用冒号连接,键值对之间使用逗号隔开
        • 对象的伪代码:{ 颜色:红色, 身高:180, 体重:150, 发型:板寸 }
  3. 对象的意义(作用)
    • 存储数据
    • 编程
  4. 对象的创建
    • 字面量:var obj = {}
    • 构造函数:var obj = new Object()
  5. 任何情况下,两个对象都不相等;如果相等了,表示这俩就是一个对象。
  6. 对象的操作语法
    • 点语法:当对象的属性是具体的值时
    • 中括号语法:当对象的属性是变量时
  7. 对象的操作
    • 增:
      • obj.sex = “男”
      • obj[“sex”] = “男”
    • 删:
      • delete obj.age;
      • delete obj[“age”];
      • obj.sex = “女”
      • obj[“sex”] = “女”
      • console.log(obj.age)
      • console.log(obj[“age”])
  8. object对象:对象,数据的无序集合,本质是键值对,数据的打包
  9. array对象:数组,数据的有序集合,本质是有索引(下标)的数据,数据的打包
    • 一组数据的组合
    • 有序,索引,下标:0 ~ 数组的length-1
    • 长度,个数,length
    • 配合循环,快速解析数组中所有数据
  10. 创建数组
    • 字面量:var arr = [];
    • 构造函数:var arr = new Array();
    • 区别:当有且只有一个数值型数据时,字面量认为这就是一个数据,构造函数认为这是长度
  11. 数组的操作
    • 索引+长度:(重点*****)
      • 增:数组的增,其实只是在增加长度,增加长度之后,再给新增加的位置赋值(原则上来说只能在数组的最后新增)
      • 删:数组的删,其实只是在缩小长度(原则上来说只能从数组的最后开始删除)
      • 改:重新赋值,想改谁,找到索引直接赋值即可
      • 查:根据指定索引直接读取数组中数据,配合循环,获取数组中所有数据,索引范围:0~length-1
    • 方法操作:工具而已
      • 方法:属于某个对象的函数。数组的方法:属于数组对象的函数
      • 语法,功能,参数,返回值,是否改变原数据
      • 数组.push()
        • 最后新增
        • 要新增的数据
        • 新增之后的数组的长度
        • 改变原数据
      • 数组.shift()
        • 首位删除
        • 没有参数
        • 返回删除的数据
        • 改变原数据
      • 数组.unshift()
        • 首位新增
        • 添加要新增的数据
        • 返回值为新增数据的长度
        • 改变原数据
      • 数组.pop()
        • 末尾删除
        • 没有参数
        • 返回末尾删除的数据
        • 改变原数据
      • 数组.slice()
        • 截取指定:从参数1截取到参数2的前一个位置的数据,返回值是截取出的新数组,没有改变老数组
        • var res = arr.slice(3); 参数1:截取索引号2之后的数据,对原数据没有影响
        • var res = arr.slice(3, 5); 截取索引号3-5的数据,对原数据没有影响
        • 返回值是截取出的新数组
        • 不改变原数据
      • 数组.splice()
        • 删除并替换:参数1:开始删除的位置,参数2:删除的个数,参数3~:要插入到删除位置的数据
        • var res = arr.splice(2); 删除索引号2开始所有数据
        • var res = arr.splice(2, 2); 删除从索引号2开始删除,删除后面2位
        • var res = arr.splice(2, 2, 'hahah');删除从索引号2开始的数据,删除位数为2位,把参数3插入到要删除位置的数据
        • var res = arr.splice(2, 3, "hahah", 123, "abc", "qwe", "as");删除从索引号2开始的数据,删除位数为3位,把参数3要插入到删除位置的数据,可以不对应删除的位数,任意添加
        • var res = arr.splice(3, 0, "abc"); 在索引第3位删除0个数据添加一个数据abc
        • 返回删除的数据
        • 改变原数据
      • 数组.sort()
        • 排序
        • var arr2 = [3, 8, 67, 5, 89, 66, 51];重新定义一组数组
          var res = arr2.sort(function (a, b) {不写函数,默认只能个位数排序
          return a - b; 排序});
          console.log(arr2); 返回值排序从小到大的顺序排列
        • 返回值为从大到小或从小到大排序
        • 改变原数据
      • 数组.reverse()
        • 翻转
        • 没有参数
        • 返回值是原数据的翻转
        • 改变原数据
      • 数组.concat()
        • 合并数组
        • var res = arr.concat(5, [1,2,3], "hello");参数为需要合并的数据,数组,字符,数值
        • 返回值为原数据+合并的数组数据
        • 不改变原数据
      • 数组.join()
        • 连接数据转字符
        • var res = arr.join('~'); 用~连接字符串 符号可任意修改;
        • 返回值是字符型数据中间加入设置的连接符
        • 未改变原数据
  12. 数组的分类
    • 数组是一组数据的组合,一个数组中,尽量存储同类型数据
    • 全是字符的数组,字符数组
      • ["a","b","hello","张三"]
    • 全是数值的数组,数值数组
      • [23,41,25,16,27,38]
    • 全是布尔的数组,布尔数组
      • [true, true, false, true]
    • 全是对象的数组,对象数组,json数组
      • [{name:"admin"},{name:"张三"},{name:"李四"}]
    • 全是数组的数组,数组数组,二维数组,多维数组
      • [[1,2,3],["a","b"],[true],[{}],[[],[[],[]],[]]]
    • json数组和多维数组的结构过于复杂,解析方式
      • 逐层解析
  13. 关于计算机的内存存储机制
    • 栈:用来存储指定数据所在堆空间的地址,空间小,稳定,不可修改
    • 堆:用来存储具体的数据,空间大,灵活,可以被修改
    • 栈和堆:一一对应,一对一,多对一,不能一对多
  14. 根据数据在内存中的储存形式划分
    • 引用传递的数据:复杂数据,在内存中,变量存储在栈中,值存储在堆中,栈和堆通过地址产生关联
      • 在复制时,拷贝的是地址。导致修改了新地址的值,会影响老地址的值(新老地址,就是一个地址!)
      • object,array,function
    • 值传递的数据:基本数据,在内存中,变量和值,都存储在栈中,不占堆空间
      • 在复制时,拷贝的是值。导致修改了新数据的值,不会影响老数据的值
      • string,number,boolean,undefined,null
  15. 引用传递数据的拷贝方式
    • 浅拷贝:只拷贝地址。修改新数据,会影响老数据
      • 使用=号赋值时,默认的拷贝方式
    • 深拷贝:不拷贝地址,只拷贝值。修改新数据时,不会影响老数据
      1. 先解析引用传递的数据,解析成值传递的数据,再做拷贝
        • 遍历之后,逐个复制
        • 数组采用循环遍历
        • 对象采用for-in遍历
  16. 对象的遍历
    • 对象是无序集合,不能使用循环直接遍历
    • 要使用专属的遍历方式:for-in;遍历的是键(key),一般用于非数组对象。
    for(var i in obj){
        // i 就是 obj 的键
        // obj[i] 就是对应的值
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草率怪199888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值