文章目录
- [1 对象方法扩展](#1 对象方法扩展)
-
- [1.1 取出键值:Object.values](#1.1 取出键值:Object.values)
- [1.2 取出键值对:Object.entries](#1.2 取出键值对:Object.entries)
- [1.3 获取对象所有属性的属性描述符:Object.getOwnPropertyDescriptors](#1.3 获取对象所有属性的属性描述符:Object.getOwnPropertyDescriptors)
- [1.4 克隆对象](#1.4 克隆对象)
- [2 字符串填充](#2 字符串填充)
-
- [2.1 padStart()、padEnd()](#2.1 padStart()、padEnd())
- [2.2 函数参数的末尾加逗号](#2.2 函数参数的末尾加逗号)
1 对象方法扩展
1.1 取出键值:Object.values
js
let obj = {
name:"kerwin",
age:100
}
console.log(Object.values(obj))
1.2 取出键值对:Object.entries
js
let obj = {
name:"kerwin",
age:100
}
console.log(Object.entries(obj))
1.3 获取对象所有属性的属性描述符:Object.getOwnPropertyDescriptors
js
let obj = {
name:"kerwin",
age:100
}
console.log(Object.getOwnPropertyDescriptors(obj))
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let obj = {
name:"kerwin",
age:100
}
// console.log(Object.keys(obj)) // 取出key名
console.log(Object.values(obj)) // 取出键值 -> 数组
console.log(Object.entries(obj)) // 取出键值对 -> 数组
// let m = new Map(obj) // 错误
let m = new Map(Object.entries(obj))
console.log(m)
console.log(Object.getOwnPropertyDescriptors(obj)) // 获取对象所有属性的属性描述符,克隆对象
Object.assign() // 浅克隆,将原对象的属性复制到新对象中
</script>
</body>
</html>
1.4 克隆对象
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let obj = {
name: "kerwin",
age: 100,
location: {
province: "辽宁",
city: "大连"
},
get city(){
return this.location.city
},
set city(value){
this.location.city = value
},
/*get name(){
console.log("get");
return this.name; // 不能对已有属性进行拦截,陷入死循环
}*/
get uppername(){ // 首字母大写
console.log("get")
return this.name.substring(0, 1).toUpperCase() + this.name.substring(1)
},
set uppername(value){
// console.log("set",value)
this.name = value
}
}
let obj1 = {}
Object.assign(obj1, obj) // 只能复制属性,不复制方法
//Object.assign(obj2, obj1) // 无法克隆 get set方法
Object.defineProperties(obj1, Object.getOwnPropertyDescriptors(obj)) // 不仅克隆属性,也克隆方法
</script>
</body>
</html>
2 字符串填充
2.1 padStart()、padEnd()
padStart()、padEnd()方法可以使得字符串达到固定长度,有两个参数,字符串目标长度和填充内容。
js
let str= "kerwin"
console.log(str.padStart(10,"x")); //xxxxkerwin
console.log(str.padEnd(10,"x")); //kerwinxxxx
console.log(str.padStart(5,"x")); //kerwin,不填充,不变化
console.log(str.padEnd(5,"x")); //kerwin,不填充,不变化
// 01 02 03 --- 12
let list = []
for(let i = 1; i < 13; i++){
// list.push(String(i).padStart(2, "0"))
list.push((i + "").padStart(2, "0")) // i + "转为字符串"
}
2.2 函数参数的末尾加逗号
js
function test(
a,
b,
c,
){
console.log(a,b)
}
test(
1,
2,
3,
)
"末尾逗号"在添加新的参数、属性、元素时是有用的,你可以直接新加一行而不必给上一行再补充一个逗号,这样使版本控制工具的修改记录也更加整洁。