目录
  1. 1. object.assign和扩展运算符是深拷贝还是浅拷贝,两者区别
    1. 1.1. object.assign (可以用作合并方法)
    2. 1.2. 扩展运算符
      1. 1.2.1. 处理函数参数个数不确定的情况
  2. 2. 移动端|大屏自适应方案
    1. 2.1. document.readyState返回状态(只读)
    2. 2.2. DOMContentLoaded事件
  3. 3. 当 z-index 值相同时,后加载的元素显示优先。
ES6碎片

object.assign和扩展运算符是深拷贝还是浅拷贝,两者区别

object.assign (可以用作合并方法)

let outObj = {
inObj: {a: 1, b: 2}
}
let newObj = Object.assign({}, outObj)
newObj.inObj.a = 2
console.log(outObj) // {inObj: {a: 2, b: 2}} //浅拷贝

扩展运算符

let outObj = {
inObj: {a: 1, b: 2}
}
let newObj = {...outObj}
newObj.inObj.a = 2
console.log(outObj) // {inObj: {a: 2, b: 2}} //浅拷贝

两者都是浅拷贝。
Object.assign()方法接收的第一个参数作为目标对象,后面的所有参数作为源对象。然后把所有的源对象合并到目标对象中。
它会修改了一个对象,因此会触发 ES6 setter。
扩展操作符(…)使用它时,数组或对象中的每一个值都会被拷贝到一个新的数组或对象中。
它不复制继承的属性或类的属性,但是它会复制ES6的 symbols 属性。

参考:
js面试题

处理函数参数个数不确定的情况

function mutiple(...args) {
console.log(args)
}
mutiple(1, 2, 3, 4) // [1, 2, 3, 4]

移动端|大屏自适应方案

document.readyState返回状态(只读)

DOMContentLoaded事件

当 z-index 值相同时,后加载的元素显示优先。

文章作者: ruqiuvy
文章链接: https://github.com/yiyeruqiuvy/2022/07/07/ES6%E7%A2%8E%E7%89%87/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 一夜入秋非生之所
打赏
  • 微信
  • 支付寶

评论