zoukankan      html  css  js  c++  java
  • ...扩展运算符

            // ...扩展运算符,可以合并数组,合并对象
            //1.合并对象
            const RNG = {
                top: 'letme',
                ap: 'xiaohu',
                jug: 'mlxg',
                ad: 'uzi',
                sup: 'xiaoming'
            }
            //console.log(...RNG); //  Uncaught TypeError: Found non-callable @@iterator,对象数组中没有部署迭代器iterator,所以扩展运算符不能够直接操作对象
    // 关于迭代器可以参考这篇文章 https://www.cnblogs.com/jony-it/p/10969036.html
    const thefullrng = { ...RNG, anotherTop: 'zitai', anotherJug: 'karsa', } console.log(thefullrng) //top: 'letme', ap: 'xiaohu', jug: 'mlxg', ad: 'uzi', sup: 'xiaoming',anotherTop:'zitai',anotherJug:'karsa' // 2.合并数组 const IG = ["theshy", 'ningwang', 'rookie', 'jacklove', 'baolan'] console.log(...IG); //theshy ningwang rookie jacklove baolan,此处可以对数组直接进行...操作,是因为数组中部署了Iterator接口 const others = ['duke'] console.log(...IG, ...others); // 合并后的结果为 theshy ningwang rookie jacklove baolan duke // 注: // 如果只是一层数组或是对象,其元素只是简单类型的元素,那么属于深拷贝 let aa = { age: 18, name: 'aaa' } let bb = { ...aa }; bb.age = 22; console.log(aa.age); // 18 // 如果数组或对象中的元素是引用类型的元素,那么就是浅拷贝 // let personA = { // age: 18, // name: 'personA', // address: { // city: '成都' // } // } // let personB = { ...personA }; // personB.address.city = '深圳'; // console.log(personA.address.city); // 深圳 此时personA和personB的address.city指向同一个地址,浅拷贝 //可以将上面的浅拷贝变成深拷贝吗? let personA = { age: 18, name: 'personA', address: { city: '成都' } } let personB = { ...personA, address: { ...personA.address } // 如果存在相同的属性,后面的会覆盖前面的 }; personB.address.city = '深圳'; // console.log(personB); console.log(personB.address.city); // 深圳 console.log(personA.address.city); // 成都
  • 相关阅读:
    对眼睛有利的屏幕颜色
    C++的动态联编与静态联编【转载】
    关于虚析构函数
    虚析构函数的使用(转载!)
    c/c++内存机制(转)
    delete this
    PhpStorm环境配置
    flutter之路由与导航
    flutter之Widget
    Flutter项目初步认识
  • 原文地址:https://www.cnblogs.com/zhh-blogs/p/15556335.html
Copyright © 2011-2022 走看看