对象的扩展

1 对象的简写

ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。

// 1.属性的简写
let [name, age, sex] = ["xiaowang", 20, "女"];
let p1 = {
    name: name,
    age: age,
    sex: sex
}
console.log(p1);
//在es6中,对象的key和value如果相同,则可以简写
let p2 = {
    name,
    age,
    sex
}
console.log(p2);
//2.方法的简写
let p3 = {
    name,
    age,
    sex,
    do: function () {
        console.log("eat")
    }
}
p3.do();

let p4 = {
    name,
    age,
    sex,
    do() {
        console.log("eat")
    }
}
p4.do();

2 属性名表达式

JavaScript 定义对象的属性,有两种方法:点运算符和中括号运算符

但是,如果使用字面量方式定义对象(使用大括号),在 ES5 中只能使用标识符,而不能使用变量定义属性。

也就是说在ES5中 key/value key是固定不变的,在ES6中,支持属性表达式,支持key发生变化

//在ES5中 key/value key是固定不变的
let p5 = {
    name: "laowang",
    sex: "女"
}

// 在ES6中,支持key发生变化
let a = "name";
let b = "sex";
let p6 = {
    [a]: "laowang",
    [b + "1"]: "nv"
}
console.log(p6)

//表达式还可以用于定义方法名

3 对象的扩展运算符

ES2018 将这个运算符引入了对象。

let { a, b, ...c } = {
    a: 1,
    b: 2,
    c: 3,
    d: 4,
    e: 5
}
console.log(c)

4 对象新增的方法

4.1 Object.is()

判断对象是否相等 相当于===,修复NaN不等自己的问题

console.log(Object.is(1, 1))
console.log(Object.is({}, {}))
console.log(Object.is(NaN, NaN))

4.2 合并方法Object.assign

let obj1 = { a: 1 };
let obj2 = { b: 2 };
let obj3 = { c: 3 };
let newObj = Object.assign(obj1, obj2, obj3);
console.log(newObj)

4.3 Object.freeze

  • Object.freeze() 方法可以冻结一个对象。
  • 一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。
  • freeze() 返回和传入的参数相同的对象。

4.4 Object.hasOwn

  • 在过去我们判断某个字符串变量是否是对象的自有属性时,通常使用 Object 对象原型链上的 hasOwnProperty 方法来判断,但是 JavaScript 普通对象的原型可以被覆盖

  • 现在 ECMAScript 官方正式提出 Object.hasOwn 提案,快捷判断对象自有属性,提高代码可读性。

  • 有时候我们根据需要使用 in 操作符判断某参数是否是对象的属性,in 操作符与 Object.hasOwn 的不同在于除了判断对象的自有属性外,还会检查原型链上是否包含这一属性

4.5 Object.seal()

Object.seal()方法封闭一个对象,阻止添加新属性并将所有现有属性标记为不可配置(不可被删除)。当前属性的值只要原来是可写的就可以改变。

posted @   z_bky  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示