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

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

相关推荐
mONESY14 分钟前
LangGraph.js 从零上手:把 Agent 工作流从一条线变成一张网
javascript
默_笙15 分钟前
⚓ AI 的"官方答题卡":withStructuredOutput 与结构化输出的终局之战
前端·javascript
掘金挖土15 分钟前
前端手摸手跑路之 AI 应用开发(五)
前端·后端
君顾121 分钟前
西安 24 小时自助健身房系统开发实战指南
java·开发语言·健身房
小羊没烦恼!1 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
程序猿编码1 小时前
两张 3090 扛 27B:Qwen3.8-27B 大模型 DFlash2 加速版生产级落地
开发语言·gpt·深度学习·神经网络·大模型·qwen
码上成长1 小时前
Mapbox 围栏编辑踩过的几个坑:key 串了、形状炸了、icon 挡住绿点
前端·前端框架
welfare9621 小时前
新号别搞:内存管理+模板初阶+STL简介
开发语言·c++
SGAMERrain2 小时前
做了一个免费的在线绘画网格工具 DrawGrid,聊聊一个小工具是怎么越做越完整的
前端
敲代码的瓦龙2 小时前
Jetpack?ViewModel!!!
android·开发语言·kotlin·android-studio