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

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

相关推荐
Bat U几秒前
JavaEE|文件操作和IO
java·开发语言
qq_381338503 分钟前
CSS @layer 级联层实战指南:从样式冲突到分层架构
前端·css
广州华水科技6 分钟前
深度测评2026年好用的单北斗GNSS变形监测系统推荐,提升GNSS位移监测精度,引领智能监控新风尚
前端
脉动数据行情6 分钟前
Python 实现融通金行情数据对接(实时推送 + K 线 + 产品列表)
开发语言·python
花归去22 分钟前
vue3中 function getText(){} 、 const getText=()=>{} ;区别在哪里,优缺点
javascript·vue.js·ecmascript
ZC跨境爬虫36 分钟前
跟着 MDN 学 HTML day_33:(Attr 接口与属性节点的深入理解)
前端·javascript·ui·html·音视频·html5
skywalk816343 分钟前
Trae生成的中文编程语言关键字(如“定“、“函“、“印“等)需要和标识符之间用 空格 隔开,以确保正确识别
服务器·开发语言·编程
神所夸赞的夏天1 小时前
如何获取多层json数据,存成dictionary,并取最大最小值
java·前端·json
红色的小鳄鱼1 小时前
前端面试js手写
开发语言·前端·javascript
焦糖玛奇朵婷1 小时前
健身房预约小程序开发、设计
java·大数据·服务器·前端·小程序