• ES6--解构赋值-对象(object对象-{}展现 属性:值 )


    1、解构还可以用于对象

    1. <script>
    2. let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
    3. console.log(foo)//aaa
    4. console.log(bar)//bbb
    5. script>

    2、对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。 

    1. <script>
    2. let { bar, foo } = { foo: 'aaa', bar: 'bbb' };
    3. console.log(foo)//aaa
    4. console.log(bar)//bbb
    5. script>

    3、变量没有对应的同名属性,导致取不到值,最后等于undefined,解构失败=变量=undefined

    1. <script>
    2. let { baz } = { foo: 'aaa', bar: 'bbb' };
    3. console.log(baz)//undefined
    4. script>

    4、利用 解构赋值可以将现有对象的方法,赋值到某个变量:只要此变量名和属性相同

    4.1的Math对象中保存的内容赋值给变量名与其属性相同 进行接收

    1. <script>
    2. let { log, sin, cos,PI} = Math;
    3. console.log(sin(30))
    4. console.log(PI)
    5. script>

     4.2、console的属性log赋值给log相同变量名接收 控制台打印输出可以直接使用log

    1. <script>
    2. const { log } = console;
    3. log('你好')
    4. script>

     5、如果想要接收的变量名与对象的属性不一致 :后面的是变量

    1. <script>
    2. let { foo: c } = { foo: 'aaa', bar: 'bbb' };
    3. console.log(c)//aaa
    4. script>
    1. <script>
    2. let obj = { first: 'hello', last: 'world' };//对象
    3. let { first: a, last: b } = obj;
    4. console.log(a)//hello
    5. console.log(b)//world
    6. script>

    6、所以前面使用与属性相同的变量名的时候实际上是简写形式()实际上是对象和属性同名-只写一个

    1. <script>
    2. let { foo} = { foo: 'aaa', bar: 'bbb' };
    3. //等价于
    4. //let { foo :foo} = { foo: 'aaa', bar: 'bbb' };
    5. console.log(foo)//aaa
    6. script>

    7、对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量a:b=>前者是匹配模式,后者是变量,真正被赋值的是变量,而不是模式

    8、解构可以用于嵌套结构的对象

    1. <script>
    2. let obj = { p: ['Hello',{ y: 'World' }] };//ObJ变量
    3. //p属性 后面的是值
    4. let { p: [x, { y:a }] } = obj;
    5. //p是模式:xy是变量
    6. console.log(x) // "Hello"
    7. console.log (a) // "World"
    8. script>

    如果需要将模式作为变量进行赋值

    1. <script>
    2. let obj = { p: ['Hello',{ y: 'World' }] };//ObJ变量
    3. //p属性 后面的是值
    4. let { p,p: [x, { y:a }] } = obj;
    5. //p是模式:xy是变量
    6. console.log (p) // "World"
    7. script>

  • 相关阅读:
    力扣:718. 最长重复子数组
    redis运维(十六) 有序集合
    ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置
    SpringBoot2-mssql2008
    Next.js(二)Next.js基本使用
    Java数据结构和算法-5,背包问题
    excel提取单元格中的数字
    前端笔试题记录(二)-代码输出题
    【vue设计与实现】挂载和更新 4-卸载操作&区分vnode的类型
    【SpringBoot】SpringBoot2之编写第一个HelloWorld
  • 原文地址:https://blog.csdn.net/weixin_47295886/article/details/127049146