首页 > 其他分享 >对象解构2:嵌套解构

对象解构2:嵌套解构

时间:2023-02-19 12:45:05浏览次数:18  
标签:name title 对象 解构 person2 嵌套 job person

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>对象解构2:嵌套解构</title>
</head>
<body>

<script>
    let person = {
        name:'gpl',
        age:33,
        job:{
            title:'free'
        }
    };

    let person2 = {};
    ({name:person2.name,age:person2.age,job:person2.job} = person);

    //对象的引用被赋值,所以两者的改动都会影响到对方
    console.log(person2.job.title); //free
    person.job.title = 'richman';
    console.log(person2.job.title); //richman
    person2.job.title = 'god';
    console.log(person.job.title); //god


    //嵌套解构
    let {job:{title}} = person;
    console.log(title);

    //属性未定义的情况下不能使用嵌套解构

    let person3 = {
        name:'test'
    };
    //源对象上属性未定义
    // //报错:Cannot read properties of undefined (reading 'bar')
    // ({
    //     foo:{
    //         bar:person3.name
    //     }
    // }=person);

    //目标对象上属性未定义
    // //报错:Cannot set properties of undefined (setting 'title')
    // ({
    //     job:{
    //         title:person3.job.title
    //     }
    // } = person);





</script>
</body>
</html>

 

标签:name,title,对象,解构,person2,嵌套,job,person
From: https://www.cnblogs.com/polin/p/17134567.html

相关文章

  • 对象解构3:部分解构
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>对象解构3:部分解构</title></head><body><script>letperson={nam......
  • 对象解构
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>对象解构</title></head><body><script>letperson={name:'gpl',......
  • C++栈上创建对象和堆上创建对象
    一、在栈(Stack)上创建对象Student是一个类,创建一个实例化对象:Studentstu;下面进行创建对象指针的操作(非必须):上面代码中创建的对象stu在栈上分配内存,需要使用&获取......
  • C++基于面向对象思想的ATM 系统设计与实现(三级项目)[2023-02-19]
    C++基于面向对象思想的ATM系统设计与实现(三级项目)[2023-02-19]实验二基于面向对象思想的ATM系统设计与实现(三级项目)一、实验目的:(1)掌握派生类的使用方法。(2)......
  • java面向对象
    java面向对象以类的方式组织代码,以对象的组织(封装)程序。一个类里面只有方法和属性一个项目至多只有一个main方法创建对象类是抽象的,需要进行实例化publicclass......
  • 面向对象 续
    //类的格式声明//格式[修饰符]class类名{//属性列表//构造器列表//get/set方法//其他方法}如何创建对象new类名();  用无参构造new类名(......
  • 面向对象
    面向对象(重点难点)面向对象和面向过程都是编程思想面向过程注重过程,步骤,怎么做   执行者面向对象注重对象,谁来做        指挥者面向对象学习1......
  • 微软出品自动化神器【Playwright+Java】系列(九)多线程、重定向、弹出新窗口、截图、新
    写在前面关于Playwright系列的文章,真的很久没有写了,今天一个不小心官方API部分过完了,下面将为大家逐一演示,感兴趣的同学可以自行动手练习。API部分多线程直白点说就是......
  • 继承的对象模型
    继承的对象模型1)创建派生类对象时,先调用基类的构造函数,再调用派生类的构造函数。2)销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。如果手工调用派生类的......
  • python面向对象
    1、面向对象和面向过程的区别1.1、面向过程:是一种以事件为中心的编程思想,更关注过程。简单的问题可以用面向过程的思路来解决,直接有效,但是当问题的规模变得更大时,用面向过程......