富阳建设局网站北京seo编辑
一、解构赋值
1、数组的解构
1.1、解构赋值
const arr = ["孙悟空", "猪八戒", "沙和尚"];let a, b, c;[a, b, c] = arr; // 等同于 [a, b, c] = ["孙悟空", "猪八戒", "沙和尚"]
1.2、声明同时解构
let [d, e, f, g] = ["唐僧", "白骨精", "蜘蛛精", "玉兔精"];let [d, e, f, g] = ["唐僧", "白骨精", "蜘蛛精"]; // g是undefined
注意:括号、中括号前写分号,不会报错。或者每行代码都写上分号
1.3、解构时没有对应的值,就用默认值,而不是undefined
let [d, e, f, g] = [1, 2, 3] // g=undefinedlet [d, e, f = 77, g = 10] = [1, 2, 3] // [1, 2, 3, 10] 覆盖f的默认值,g用默认值
1.4、...设置剩余元素的值
let [d, e] = [1, 2, 3, 4, 5] // [1, 2]let [d, e, ...f] = [1, 2, 3, 4, 5] // [1, 2, 3, 4, 5]
1.5、对以数组为返回值的函数进行解构
function fn(){return ["二郎神", "猪八戒"]
}let [name1, name2] = fn() // [name1, name2] = ["二郎神", "猪八戒"]
1.6、快速交换两个变量的值
let a1 = 10;
let a2 = 20;
[a1, a2] = [a2, a1]; // 等号左边是变量,等号右边是值const arr2 = ["孙悟空", "猪八戒"];
[arr2[0], arr2[1]] = [arr2[1], arr2[0]];
1.7、根据需求解构数组
const arr3 = [["孙悟空", 18, "男"], ["猪八戒" ,28, "男"]]let [[name, age, gender], obj] = arr3console.log(obj) // ["猪八戒" ,28, "男"]
console.log(name, age, gender) // 孙悟空 18 男
2、对象的解构
2.1、解构赋值
注意加括号!
const obj = { name: "孙悟空", age: 18, gender: "男" };let name, age, gender;({ name, age, gender } = obj); // 加括号
2.2、声明同时解构
const obj = { name: "孙悟空", age: 18, gender: "男" }let { name, age, gender } = obj // 等同于 let { name:name, age:age, gender:gender } = obj
2.3、当变量名与对象内属性名称不一致时
const obj = { name: "孙悟空", age: 18, gender: "男" }let {name:a, age:b, gender:c} = objconsole.log(a, b, c)
2.4、解构时没有对应的值,就用默认值,而不是undefined
const obj = { name: "孙悟空", age: 18, gender: "男" }let {name:a, age:b, gender:c, address:d="花果山"} = objconsole.log(a, b, c, d)
二、对象的序列化(JSON)
1、概念
JS中的对象使用时都是存在于计算机的内存中的(0101形式)。序列化指将对象转换为一个可以存储的格式。在JS中对象的序列化通常是将一个对象转换为字符串(JSON字符串)。
2、序列化的作用
对象转换为字符串后,可以将字符串在不同的语言之间进行传递。甚至人可以直接对字符串进行读写操作,使得JS对象可以不同的语言之间传递。
- 作为数据交换的格式
- 用来编写配置文字
3、如何进行序列化
在JS中有一个工具类 JSON (JavaScript Object Notation) JS对象表示法,可以直接使用。
JS对象序列化后会转换为一个字符串,这个字符串我们称其为JSON字符串。
4、JSON类的使用方法
4.1、JSON.stringify()
将一个对象转换为JSON字符串
const obj = {name: "孙悟空",age: 18,
}const str = JSON.stringify(obj)console.log(obj) // {"name":"孙悟空","age":18}
console.log(str) // {"name":"孙悟空","age":18}
二者打印的东西看起来一样,但是上面的字体是灰色代表一个对象,下面的字体是黑色代表JSON字符串
4.2、JSON.parse()
将一个JSON格式的字符串转换为JS对象
const obj = {name: "孙悟空",age: 18,
}const str = JSON.stringify(obj)const obj2 = JSON.parse(str) 这里obj2和obj不是同一个对象,而是obj深拷贝
4.3、手动的编写JSON字符串
在很多程序的配置文件就是使用JSON编写的
const obj = {name: "孙悟空",age: 18,
}const str2 = '{"name":"孙悟空","age":18}'
5、编写JSON的注意事项
5.1、JSON字符串有两种类型:
JSON对象 {}
JSON数组 []
const str3 = "{}"
const str4 = '[]'
5.2.、JSON字符串的属性名必须使用双引号引起来
因为一些语言中字符串只能用双引号表示,为了避免转换时的麻烦,所以一定要用双引号
5.3、JSON中可以使用的属性值(元素)
也就是所有语言都共有的数据类型就可以写,JavaScript单独有的就不可以写
- 数字(Number)
- 字符串(String) 必须使用双引号
- 布尔值(Boolean)
- 空值(Null)
- 对象(Object {})
- 数组(Array [])
const str4 = '["hello", true, []]'
5.4、JSON的格式和JS对象的格式基本上一致的
注意:JSON字符串如果属性是最后一个,则不要再加逗号
6、JSON进行深复制
const obj = {name: "孙悟空",age: 18,
}const obj2 = JSON.parse(JSON.stringify(obj))