JavaScript Object.defineProperties() 方法

Object.defineProperties() 语法

Object.defineProperties() 是 JavaScript 的一个静态方法,它可以为对象同时定义一个或多个新属性,或修改对象已有属性。

你可以把 Object.defineProperties() 理解成是 Object.defineProperty() 的 “增强版”。其中,Object.defineProperty() 一次只能定义或修改一个属性,而 Object.defineProperties() 可以同时定义或修改多个属性。

提示: 想要更好地理解 Object.defineProperties(),小伙伴们需要先仔细掌握 Object.defineProperty()。

语法:

Object.defineProperties(obj, props)

说明:

Object.defineProperties() 方法接收以下 2 个参数。

  • obj(必选):是一个对象。
  • props(必选):配置属性的对象,该对象的每个键是你要定义或修改的属性,每个值是描述该属性的对象。

注意: defineProperties() 是一个静态方法,它只能被类名(即 Object)调用,而无法被实例调用。

Object.defineProperties() 摘要

属于 JavaScript Object 对象
使用频率
官方文档 查看
MDN 查看

Object.defineProperties() 示例

接下来,我们通过一个简单的例子来讲解 Object.defineProperties() 方法是如何使用的。

示例:Object.defineProperties() 基本用法

const person = {};
Object.defineProperties(person, {
    name: {
        value: "Jack",
        writable: false
    },
    age: {
        value: 20,
        writable: false
    },
});
console.log(person.name);
console.log(person.age);

运行结果如下。

Jack
20

分析:

在上面例子中,我们使用 Object.defineProperties() 方法来为 person 对象定义了两个属性:name 和 age。

由于这两个属性都设置了 writable: false,如果我们尝试修改它们的值,比如执行 person.age=30;,此时:

  • 在非严格模式下,赋值操作会被忽略,值保持 20 不变(不会报错)。
  • 在严格模式("use strict")下,则会抛出 TypeError 错误。
给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号