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 值相同时,后加载的元素显示优先。