ES6 其他知识

Object相关

属性简短声明

在声明一个对象时如果,如果keyvalue标识符相同则可以简短声明

const age = 10
const obj = {
  age,
}

在这里插入图片描述

属性名表达式

es6之后支持使用变量或表达式作为对象的key,通过[]包裹key

let key = "name"
const obj = {
  age: 22,
  [key]: "Sakurige",
}
  1. 如果是基础数据类型可以直接作为key
  2. 为对象不能正常显示,但是可以拿到值
const obj = {
 age: 22,
 [{}]: "Sakurige",
}
console.log(obj[{}]) \\ 只要是个对象就可以取得该值 ,不管是否与 [] 的一样

在这里插入图片描述
3. 为数组会将数组展开作为key,并且通过原数组与展开后的都可以拿到

const obj = {
 age: 22,
 [[1, 2, 3]]: "Sakurige",
}
console.log(obj[[1, 2, 3]])
console.log(obj[["1", "2", "3"]])
console.log(obj["1,2,3"])

在这里插入图片描述

后边两种也不会这么搞,我这儿纯属闲得无聊

展开语法

展开语法 (Spread syntax), 可以在函数调用 数组构造时,将数组表达式或者 string 在语法层面展开;还可以在构造字面量对象时,将对象表达式按 key-value 的方式展开。

  1. 数组,字符串在数组构造时
const strArr = [..."sdshoahsoahsa"]
const nums = [1, 2, 3, 4, ...[31, 32, 54]]
console.log(strArr)
console.log(nums)

在这里插入图片描述
2. 数组,字符串在函数调用时

console.log(..."sakurige")
console.log(...[1, 2, 3, 4])

在这里插入图片描述

  1. 对象就只能是对象构造时了
const obj = {
  name: "sakurige",
  age: 21,
}
const newObj = {
  ...obj,
  address: "M78",
}
console.log(newObj)

在这里插入图片描述
展开语法是浅拷贝

const obj = {
  name: "sakurige",
  age: 21,
  frends: ["f1", "f2"],
}
const newObj = {
  ...obj,
  address: "M78",
}
newObj.frends.push("f3")
console.log(newObj.frends)
console.log(obj.frends)

在这里插入图片描述

解构赋值

解构赋值允许我们按照一定模式,从数组和对象中提取值,对变量进行赋值

数组解构

与数组索引对应就好

// 1. 声明变量时解构
const [num1, num2] = [1, 2, 3]
console.log(num1, num2) // 1 2

// 2. 先声明变量后解构
let num1, num2
[num1, num2] = [1, 2]
console.log(num1, num2) // 1 2

// 3. 给默认值
let [num1 = 0, num2 = 1] = []
console.log(num1, num2) // 0 1
// 4. 数组剩余部分赋值给一个变量
let [num1, ...nums] = [1, 2, 3, 4, 5]
console.log(num1, nums) // 1  [2, 3, 4, 5]
// 5. 忽略某些值
let [num1, , num3] = [1, 2, 3] // 直接用逗号隔开就行了
console.log(num1, num3) // 1  3
对象解构

只需要与需要解构的对象属性名保持一致,如果要取别名就把key保持一致,value就为新变量名

// 1. 最基本的对象解构
let { name, age } = { name: "sakurige", age: 11 }
console.log(name, age) // sakurige 11
// 2. 声明与赋值分开
let name, age
({ name, age } = { name: "sakurige", age: 11 }) // 这样必须给该表达式用小括号包裹
console.log(name, age) // sakurige 11
// 3. 取别名
let { name: newName, age } = { name: "sakurige", age: 11 } // 属性名与后面的对象保持一致,值作为新的变量名
console.log(newName, age) // sakurige 11
// 4. 默认值
let { name = "羽苏", age } = { age: 11 }
console.log(name, age) // 羽苏 11
// 5. 取别名并有默认值
let { name: newName = "羽苏", age } = { age: 11 }
console.log(newName, age) // 羽苏 11
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值