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

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

相关推荐
胡萝卜术4 小时前
从API调用到手写LRU:力扣146「LRU缓存」的哈希表+双向链表终极进化之路
前端·javascript·面试
科技道人4 小时前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
天疆说5 小时前
Zotero Connector 在 Edge 里找不到桌面 Zotero(Linux / Zotero 9.0.6 / Edge 150)
linux·前端·edge
李伟_Li慢慢6 小时前
02-从硬件说起WebGL
前端·three.js
逝水无殇7 小时前
C# 异常处理详解
开发语言·后端·c#
kyriewen7 小时前
看了微软几万人用AI编程的数据——效率涨24%的代价没人提
前端·ai编程·claude
2601_963771377 小时前
How to Scale Your WordPress Store Traffic in 2026
前端·php·plugin
亿元程序员7 小时前
老板说我的3D箭头游戏用来做试玩太普通了,没人想玩,让我变点花样...
前端
李伟_Li慢慢8 小时前
01-threejs架构原理-课程简介
前端·three.js
玖玥拾8 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#