【前端】ES8:对象方法扩展和字符串填充

文章目录

  • [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,
)

"末尾逗号"在添加新的参数、属性、元素时是有用的,你可以直接新加一行而不必给上一行再补充一个逗号,这样使版本控制工具的修改记录也更加整洁。

相关推荐
weixin_473894776 分钟前
vue项目引入比较独特的字体的方法
前端·javascript·vue.js
呵呵哒( ̄▽ ̄)"9 分钟前
go-admin-ui的菜单分割线设计思路和代码实现
前端·ui·golang·菜单分割线·goadmin
且行且知10 分钟前
前端html+css+js 基础总结
javascript·css·html
LINGYI_WEN13 分钟前
为什么在技术选型中选择 webpack
前端·webpack
好好学习啊天天向上22 分钟前
中国计算机学会(CCF)推荐中文科技期刊目录(2019年)
开发语言
天問_29 分钟前
Tauri 应用 input 输入自动大写问题定位解决
前端·rust·tauri
koiy.cc36 分钟前
解决:Vue2项目在低版本浏览器上不兼容问题
前端
LvManBa40 分钟前
Vue学习记录之八(局部组件,全局组件,递归组件,动态组件)
javascript·vue.js·学习
蜜桃小阿雯41 分钟前
JAVA开源项目 影城管理系统 计算机毕业设计
java·开发语言·jvm·spring boot·spring·spring cloud·java-ee