js学习笔记(三)

一、赋值、浅拷贝、深拷贝的区别

  • 赋值:拷贝了对象的引用,修改其中一个对象的属性值,另一个对象也会受到影响
  • 浅拷贝:对基本数据类型赋值,引用类型将引用地址赋值给对应变量,修改基本数据类型的值互不影响,修改其中一个对象引用数据类型的值,另一个对象也会受到影响
  • 深拷贝:对其对象的各个属性进行完全拷贝,修改其中一个对象的值,另一个对象不受影响

  基本类型变量栈空间的值就是变量本身的值,引用类型变量栈空间的值是对应堆空间地址。所以直接赋值的话,直接从栈空间访问,所以两个变量的值(堆空间地址)是一样的,本质就是同一片内存。浅拷贝相当于把地址对应的内存空间完全一致的复制了一份,所以里面的引用类型地址也是一样的,深拷贝则是把这一整个地址链上的内存完全的复制了一份。

二、ES参数值传递

  ES中规定参数只能按值传递,不能按引用传递。传递复杂数据类型时传递的是引用类型的参数而不是按照引用传递,注意二者存在区别,引用类型的参数在函数内部被重写后,函数执行完毕即被销毁,外部访问不到,而对引用传递变量的修改则会反映到外部的变量上。

三、Array

  1. Array.from()
      ES6新增,用于将类数组结构转换为数组实例,作用如下:
    (1)将字符串拆分为单字符数组
    (2)将集合和映射转化为一个新数组
    (3)对现有数组进行浅复制
    (4)将任何可迭代对象转化为数组
    (5)将arguments对象转化为数组
    (6)将带有必要属性的自定义对象转化为数组
  2. Array.of()
      ES6新增,用于将一组参数转化为数组实例
  3. 数组空位
      ES6重新规范定义了如何处理空位,ES6新增方法普遍将这些空位当作存在的元素,只是值为undefined,而ES6之前的方法会忽略掉这些空位
  4. splice()
      splice()方法是在原有数组上直接做修改,用法如下:
    (1)删除:传入开始位置和要删除的元素数量
    (2)插入:传入开始位置、0和要插入的元素数量
    (3)替换:开始位置、要替换的元素数量和要插入的任意多元素
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值