【前端】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,
)

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

相关推荐
安大小万13 分钟前
C++ 学习:深入理解 Linux 系统中的冯诺依曼架构
linux·开发语言·c++
随心Coding17 分钟前
【零基础入门Go语言】错误处理:如何更优雅地处理程序异常和错误
开发语言·后端·golang
T.Ree.22 分钟前
C语言_自定义类型(结构体,枚举,联合)
c语言·开发语言
Channing Lewis23 分钟前
python生成随机字符串
服务器·开发语言·python
小熊科研路(同名GZH)1 小时前
【Matlab高端绘图SCI绘图模板】第002期 绘制面积图
开发语言·matlab
鱼是一只鱼啊1 小时前
.netframeworke4.6.2升级.net8问题处理
开发语言·.net·.net8
Channing Lewis1 小时前
如何实现网页不用刷新也能更新
前端
Tanecious.1 小时前
C语言--数据在内存中的存储
c语言·开发语言·算法
咸甜适中1 小时前
go语言gui窗口应用之fyne框架-动态添加、删除一行控件(逐行注释)
开发语言·后端·golang