阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JS Reflect.defineProperty()

      静态方法 Reflect``.defineProperty() 基本等同于 Object.defineProperty() 方法,唯一不同是返回 Boolean 值。

      语法

      Reflect.defineProperty(target, propertyKey, attributes)
      
      

      参数

      target

      目标对象。

      propertyKey

      要定义或修改的属性的名称。

      attributes

      要定义或修改的属性的描述。

      返回值

       Boolean 值指示了属性是否被成功定义。

      异常

      如果target不是 Object,抛出一个 TypeError

      描述

      Reflect.defineProperty 方法允许精确添加或修改对象上的属性。更多的细节请参阅 Object.defineProperty 。Object.defineProperty 返回一个对象,或者如果属性没有被成功定义,抛出一个 TypeError 。 相比之下,Reflect.defineProperty方法只返回一个 Boolean ,来说明该属性是否被成功定义。

      示例

      使用 Reflect.defineProperty()

      const student = {};
      Reflect.defineProperty(student, "name", {value: "Mike"}); // true
      student.name; // "Mike"
      
      

      检查属性是否被成功定义

      Object.defineProperty 方法,如果成功则返回一个对象,否则抛出一个 TypeError 。另外,当定义一个属性时,你也可以使用 [try...catch](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch) 去捕获其中任何的错误。而因为 Reflect.defineProperty 返回 Boolean 值作为成功的标识,所以只能使用 [if...else](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else)

      if (Reflect.defineProperty(target, property, attributes)) {
        // 成功
      } else {
        // 失败
      }
      

      规范

      SpecificationStatusComment
      ECMAScript 2015 (6th Edition, ECMA-262)Reflect.definePropertyStandardInitial definition.
      ECMAScript Latest Draft (ECMA-262)Reflect.definePropertyDraft

      相关链接

      目录
      目录