51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

JavaScript-内建对象

⭐️ 有关JavaScript的学习总结



内建对象 {#%E5%86%85%E5%BB%BA%E5%AF%B9%E8%B1%A1}

>解构赋值 {#%3E%E8%A7%A3%E6%9E%84%E8%B5%8B%E5%80%BC}

const arr = ["孙悟空", "猪八戒", "沙和尚"]

let a,
b,
c


    // a = arr[0]
    // b = arr[1]
    // c = arr[2]




;\[a, b, c\] = arr // 解构赋值


let \[d, e, f, g\] = \["唐僧", "白骨精", "蜘蛛精", "玉兔精"\] // 声明同时解构


console.log(d, e, f, g)
// ;\[d, e, f, g\] = \[1, 2, 3\]
// ;\[d, e, f = 77, g = 10\] = \[1, 2, 3\]
;\[d, e, f = 77, g = g\] = \[1, 2, 3\]


let \[n1, n2, ...n3\] = \[4, 5, 6, 7\] // 解构数组时,可以使用...来设置获取多余的元素


// console.log(n1, n2, n3)


function fn(){
return \["二郎神", "猪八戒"\]
}


let \[name1, name2\] = fn()


// 可以通过解构赋值来快速交换两个变量的值
let a1 = 10
let a2 = 20


// let temp = a1
// a1 = a2
// a2 = temp


;\[a1, a2\] = \[a2, a1\] // \[20, 10\]


const arr2 = \["孙悟空", "猪八戒"\]
// console.log(arr2)


;\[arr2\[0\], arr2\[1\]\] = \[arr2\[1\], arr2\[0\]\]
// console.log(arr2)


// console.log("a1 =", a1)
// console.log("a2 =", a2)


/\*
数组中可以存储任意类型的数据,也可以存数组,
如果一个数组中的元素还是数组,则这个数组我们就称为是二维数组
\*/


const arr3 = \[\["孙悟空", 18, "男"\], \["猪八戒" ,28, "男"\]\]


// for(let stu of arr3){
//     for(let v of stu){
//         console.log(v)
//     }
// }


let \[\[name, age, gender\], obj\] = arr3

`console.log(name, age, gender)
console.log(obj)`

>对象的解构 {#%3E%E5%AF%B9%E8%B1%A1%E7%9A%84%E8%A7%A3%E6%9E%84}

const obj = { name: "孙悟空", age: 18, gender: "男" }

// let { name, age, gender } = obj // 声明变量同时解构对象


let name, age, gender


;({ name, age, gender } = obj)


let { address } = obj // 没有的属性返回undefined


// console.log(name, age, gender)


let {name:a, age:b, gender:c, address:d="花果山"} = obj

`console.log(a, b, c, d)`

>对象的序列化 {#%3E%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96}

JSON.stringify() ------ 可以将一个对象转换为 JSON 字符串 {#json.stringify()-%E2%80%94%E2%80%94-%E5%8F%AF%E4%BB%A5%E5%B0%86%E4%B8%80%E4%B8%AA%E5%AF%B9%E8%B1%A1%E8%BD%AC%E6%8D%A2%E4%B8%BA-json-%E5%AD%97%E7%AC%A6%E4%B8%B2}

JSON.parse() ------ 可以将一个 JSON 格式的字符串转换成 JS 对象 {#json.parse()-%E2%80%94%E2%80%94-%E5%8F%AF%E4%BB%A5%E5%B0%86%E4%B8%80%E4%B8%AA-json-%E6%A0%BC%E5%BC%8F%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E6%8D%A2%E6%88%90-js-%E5%AF%B9%E8%B1%A1}

编写 JSON 的注意事项:

  • JSON 字符串有两种类型

    • JSON 对象{}

    • JSON 数组[]

  • JSON 字符串的属性名必须用双引号引起来

  • JSON 中可以使用的属性值(元素)

    • 数字(Number)

    • 字符串(String) 必须使用双引号

    • 布尔值(Boolean)

    • 空值(Null)

    • 对象(Object {})

    • 数组(Array [])

  • JSON的格式和JS对象的格式基本上一致的。
    注意:JSON字符串如果属性是最后一个,则不要再加,

/* 
    对象的序列化
        - JS中的对象使用时都是存在于计算机的内存中的
        - 序列化指将对象转换为一个可以存储的格式
            在JS中对象的序列化通常是将一个对象转换为字符串(JSON字符串)
        - 序列化的用途(对象转换为字符串有什么用):
            - 对象转换为字符串后,可以将字符串在不同的语言之间进行传递
                甚至人可以直接对字符串进行读写操作,使得JS对象可以不同的语言之间传递
            - 用途:
                1. 作为数据交换的格式
                2. 用来编写配置文字
        - 如何进行序列化:
            - 在JS中有一个工具类 JSON (JavaScript Object Notation) JS对象表示法
            - JS对象序列化后会转换为一个字符串,这个字符串我们称其为JSON字符串  

        - 也可以手动的编写JSON字符串,在很多程序的配置文件就是使用JSON编写的




\*/


const obj = {
name: "孙悟空",
age: 18,
}


// 将obj转换为JSON字符串
const str = JSON.stringify(obj) //JSON.stringify() 可以将一个对象转换为JSON字符串


const obj2 = JSON.parse(str) // JSON.parse() 可以将一个JSON格式的字符串转换为JS对象


// console.log(obj)
// console.log(str) // {"name":"孙悟空","age":18}
// console.log(obj2)


const str2 = `{"name":"猪八戒","age":28}`
const str3 = "{}"
const str4 = '\["hello", true, \[\]\]'

`console.log(str2)`

>使用 JSON 进行深复制 {#%3E%E4%BD%BF%E7%94%A8-json-%E8%BF%9B%E8%A1%8C%E6%B7%B1%E5%A4%8D%E5%88%B6}

const obj = {
    name: "孙悟空",
    friend: {
        name: "猪八戒",
    },
}

// 对obj进行浅复制
const obj2 = Object.assign({}, obj)


// 对obj进行深复制
const obj3 = structuredClone(obj)


// 利用JSON来完成深复制
const str = JSON.stringify(obj)
const obj4 = JSON.parse(str)

`// const obj5 = JSON.parse(JSON.stringify(obj))`


赞(0)
未经允许不得转载:工具盒子 » JavaScript-内建对象