1. 访问对象属性

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var User = {
'name': 'aluoha',
'age': 25
};
console.log(User.name, User.age); // aluoha 25
</script>
</head>
<body>
</body>
</html>

  

1.1 使用解构来访问对象:同样也可以访问,这种方式就是解构

         let { name, age } = User;
console.log( name, age ); // aluoha 25

1.2 解构出来的对象,需要与对象中的属性相同,不同的名字将无法实现效果:

       let {
name1,
age1
} = User;
console.log(name1, age1); //undefined, undefined

1.3 小结:关于解构

1.3.1,右边是对象, 左边解构的语法,也是对象, {}
1.3.2,上面的name, age是局部变量
1.3.3,解构出来的变量 一定要是 对象中能够查找到的属性名
1.3.4,相当于把对象中的属性暴露出,成为一个新的不需要使用对象就能访问的变量

1.4 解构出来的变量,可以更改名称,改名之后,原先的名字就无法访问对象的属性了

    <script>
var User = {
'name': 'aluoha',
'age': 25
};
let {
name: name1,
age: age1
} = User;
console.log(name1, age1); //aluoha 25
console.log(name, age); //报错
</script>

1.5.1 可以给解构过程增加变量

         var User = {
'name': 'aluoha',
'age': 25
}; let {name,age,sex} = User;
//解构出来的属性,如果不存在,默认值为undefined
console.log(name, age, sex); //aluoha undefined

1.5.2 给解构增加的变量赋值

         var User = {
'name': 'aluoha',
'age': 25
};
//解构出来的值 可以赋值 一个默认的值
let {name,age,sex = 'man'} = User;
console.log(name, age, sex); // aluoha 25 man

2. 数组解构:

2.1 部分解构

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
let arr = [101, 201, 301, 401];
//数组用[]解构
let [one, two] = arr;
console.log(one, two); // 101 201
</script>
</head>
<body>
</body>
</html>

2.2 全部解构:

         let [one, two, three, a] = arr;
console.log(one, two, three, a); // 101 201 301 401

2.3 筛选解构:

        let [, , , a] = arr;
console.log(a); //

2.4 解构时,同级之间的解构,效果是相同的,不管结构出来的是一维数组或是二维数组,只是解构结构,不解构内容

         let arr = [10, [20, 30], 40];
console.log(arr[1][0]); //
let [one, two, three, four] = arr;
console.log(one, two, three, four); //10 [20, 30] 40 undefined

2.5 内层数组解构:

        let arr = [10, [20, 30], 40];
let [one, [two, three], four] = arr;
console.log(one, two, three, four); //10 20 30 40

2.6 交换两个变量的值:相当于重新定义了let a ,let b ,而let是不能再次定义的

         let a = 10,
b = 20;
let [a, b] = [b, a]; //报错,let定义了同名变量

换一种方式:

         let a = 10,
b = 20;
[a, b] = [b, a];
console.log(a, b); //20, 10

2.7 小括号解构:使用小括号扩起来,可以避免冲突

        let User = {
name: 'aluoha',
age: 25
},
name = 'zhangsan',
age = 30;
console.log(name, age); // zhangsan 30
//小括号: 把下面这个 转成解构表达式
({
name,
age
} = User);
console.log(name, age); // aluoha 25

2.8 去掉小括号,会造成冲突

     <script>
let User = {
name: 'aluoha',
age: 25
},
name = 'zhangsan',
age = 30; // 小括号去掉,会造成定义冲突
let {
name,
age
} = User;
console.log(name, age); // 定义冲突
</script>

2.9  重命名局部变量:

         let User = {
name: 'aluoha',
age: 25
}; //重命名局部变量,mySex:赋初始值
let {
name: myName,
age: myAge,
sex: mySex = 'man'
} = User;
console.log(myName, myAge, mySex); // aluoha 25 man

3.解构表达式作为参数:

        let User = {
name: 'aluoha',
age: 25
},
name = 'zhangsan',
age = 40; console.log(name, age); //zhangsan, 40 function show(obj) {
console.log(obj);
console.log(obj === User); //true
}
show({
name,
age
} = User); //表达式传值,把User传给了obj console.log(name, age); //aluoha, 25

arguments 参数:

        let User = {
name: "aluoha",
age: 25
};
name = 'zhangsan',
age = 30;
function show() {
console.log(arguments); // {name:'aluoha',age:25}
console.log(name, age); // aluoha 25
}
show({
name,
age
} = User);

 4. 解构:

         let User = {
name: 'aluoha',
age: 25,
class: {
group1: {
one: '陈世美',
two: '马汉'
},
group2: {
one: '张龙',
two: '白眉鹰王'
}
}
};
let {
class: {
group1
}
} = User;
console.log(group1.one); // 陈世美
console.log(group1.two); // 马汉

4.1 多层解构:

       let User = {
name: 'aluoha',
age: 25,
class: {
group1: {
one: '陈世美',
two: '马汉'
},
group2: {
one: '张龙',
two: '白眉鹰王'
}
}
};
let {class: {group1: {one,two}}} = User;
console.log(one, two);

4.3  解构:

         let {
class: {
group2: dierzu
}
} = User;
console.log(dierzu.one); //张龙
console.log(dierzu.two); //白眉鹰王

4.4 解构,添加自定义变量:

        let {
class: {
group1: {
one,
two,
three = '展昭'
}
}
} = User;
console.log(one, two, three); //陈世美 马汉 展昭

es6初级之解构----之一的更多相关文章

  1. es6初级之解构----之二 及 键值反转实现

    1.解构: 不定参数,扩展表达式 let arr = [100, 201, 303, 911]; let [one, ...others] = arr; console.log(others.leng ...

  2. es6学习笔记--解构赋值

    昨天学习了es6语法中解构赋值,解构赋值在声明中和函数传参提高了灵活性和便捷性,值得掌握该语法. 概念: ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构.   数组的解构 ...

  3. 关于ES6 的对象解构赋值

    之 前写了关于ES6数组的解构 现在 go on ; 解构不仅可以用于数组,还可以用于对象: 对象的解构和数组有一个重要的不同.数组的元素是按次序排列的,变量的取值是由他的位置决定的:而对象的属性没有 ...

  4. ES6 - Note2:解构赋值

    ES6的解构赋值就是利用模式匹配从按照一定模式的数组或者对象中提取值赋值给变量. 1.数组的解构赋值 在ES6以前,变量的赋值是直接指定的,以后可以这么来写,如下所示 let [a,b,c] = [1 ...

  5. ES6 变量的解构赋值

    数组的解构赋值     var [a,b,c] = [1,2,3];    左边是变量,右边是值,根据数据结构一一对应 只要等号两边的模式相同,左边的变量就会被赋予右边对应的值,必须模式相同 如果等号 ...

  6. ES6新特性-------解构、参数、模块和记号(续)

    六.解构 解构提供了一个方便的地从对象或数组中提取数据的方法,请看下面的例子: //ES6 let [x,y]=[1,2];//x=1,y=2 //ES5 var arr=[1,2]; var x=a ...

  7. ES6 - 变量的解构赋值学习笔记

    变量的解析赋值 数组的解析赋值 es6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这就称为解构. var a = 1; var b = 2; var c = 3; //在es6中允许写成 ...

  8. [js高手之路]es6系列教程 - 解构详解

    解构通俗点说,就是通过一种特定格式,快捷的读取对象/数组中的数据的方法, es6之前,我们通过对象名称[键] 读取数据 var User = { 'name' : 'ghostwu', 'age' : ...

  9. ES6的变量解构赋值

      前  言 ES6 解构赋值: ES6允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称为解构. 1.1 数组的结构赋值 1.1.1基本用法 JS中,为变量赋值直接指定.例如下面代码: ...

随机推荐

  1. 好文推荐:转载一篇别人kaggle的经验分享

    转载:https://www.toutiao.com/i6435866304363627010/ 笔者参加了由Quora举办的Quora Question Pairs比赛,并且获得了前1%的成绩.这是 ...

  2. 第10课 std::bind和std::function(1)_可调用对象

    1. 几种可调用对象(Callable Objects) (1)普通函数指针或类成员的函数指针 (2)具有operator()成员函数的类对象(仿函数).如c++11中的std::function类模 ...

  3. 网络基础和python(二)

    一,五层协议 应用层    端口 传输层   tcp\udp 网络层   ipv4\6 数据链路层  ethernet 物理层    mac 二:什么是变量? 变量:核心在于变和量儿字,变->变 ...

  4. C语言:冒泡排序

    void sort(int arr[],int len) { ; ; i<len; i++) { printf("第%d轮:\n", i); // len-i+1:新轮比上轮 ...

  5. 阿里云发送短信验证码php_SDK

    1.登录阿里云账号下载——aliyun-dysms-php-sdk(我使用的php版本) 下载地址:https://help.aliyun.com/document_detail/55359.html ...

  6. SQL Server 2016:内存列存储索引

    作者 Jonathan Allen,译者 谢丽 SQL Server 2016的一项新特性是可以在“内存优化表(Memory Optimized Table)”上添加“列存储索引(Columnstor ...

  7. Linux netstat命令查看并发连接数

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 解释: 返回结果示例: LAST_ACK 5 (正在等待处理的 ...

  8. 凸优化&非凸优化问题

    转载知乎大神的回答:Robin Shen   参考:https://www.zhihu.com/question/20343349

  9. python补充3

    一单例模式 类:具体相同特征的一类事物,类似于模板 单例:常用的软件设计模式,用于设计一个类中只有一个实例且易于外界访问,可以对实例的个数控制并节约系统资源 运用场景:比如某个服务器程序的配置信息,它 ...

  10. day2----python的基本类型

    本文档的大致内容:(python使用版本3.6.4) 1 数字--int 2 布尔--bool 3 字符串--str 4 元祖--() 5  列表---['a','b'] 6 字典--{} 运算符: ...