1、对象属性的完全解构
(1)如果{ }里面的属性是对象的属性,解构出来是对应的属性值
let obj = {
name: "zs",
age: 11,
email: "node.js@163.com"
};
let { name, age, email } = obj;
console.log(name, age, email); //zs 11 node.js@163.com
//这个是完全解构。
//相当于是let name=obj.name;let age = obj.age...
(2)如果{ }里面的属性不是对象的属性,直接改了对象的属性名,那么解构出来得到的是undefined
let obj = {
name: "zs",
age: 11,
email: "node.js@163.com"
};
let { name1, age, email } = obj;
console.log(name1, age, email); //undefined 11 'node.js@163.com'
(3)如果想解构对象,但是解构时属性名跟本身对象的属性不一样,可以在解构时给这个属性起别名,如下name1就是给name起了个别名
let obj = {
name: "zs",
age: 11,
email: "node.js@163.com"
};
let { name: name1, age, email } = obj;
console.log(name1, age, email); //zs 11 node.js@163.com
2、对象属性的部分解构
let obj = {
name: "zs",
age: 11,
email: "node.js@163.com"
};
let { name } = obj;
console.log(name); //zs
注:解构的时候可以留意下,如果用了let,是否有重复定义,比如下面的例子:
//前面有let name,下面再出现let name,就会提示重定义的错误
let name = "ls";
let { name, age, email } = obj;
console.log(name, age, email); //提示错误,name重复定义了
3、解构语法注意的几点:
解构的语法注意点:
1、let {name} = obj; 相当于 let name = obj.name
2、大括号里面的变量名最好和obj的属性名一致,如果不一致,则是undefined
3、大括号里面的变量名顺序可以调换
4、可以部分解构也可以完全解构
5、解构可能出现变量名已经被定义的错误。解决:取出属性之后重新命名。let {name:name2} = obj;然后控制台输出name2的值就是对象中name属性的值