【问题标题】:Converting data property to accessor property and vice versa in JavaScript在 JavaScript 中将数据属性转换为访问器属性,反之亦然
【发布时间】:2020-02-07 21:37:23
【问题描述】:

我正在阅读 JavaScript 中的 [[Configurable]] 属性。来自here -

[[Configurable]] 包含一个布尔值。如果为 false,则不能删除 属性,更改其任何属性([[Value]] 除外)或转换 数据属性和访问器属性之间。换句话说, [[Configurable]] 控制属性元数据的可写性。

如何从数据属性转换为访问器属性反之亦然,可配置为 false 可能会阻止我们进行转换?

【问题讨论】:

  • let o = { p: "hi" }; Object.defineProperty(o, "p", { get: () => console.log("message") }); 如果“p”不可配置,则失败。

标签: javascript ecmascript-6 javascript-objects


【解决方案1】:

来自同一篇文章:

Object.defineProperty(obj, propName, propDesc)
obj 上创建或更改属性,其名称为propName,其属性通过propDesc 指定

例如,

const o = {example: undefined};
Object.defineProperty(o, "example", {get() {}}); // it's an accessor property now
Object.defineProperty(o, "example", {value: undefined}); // it's a data property again
Object.defineProperty(o, "example", {configurable: false}); // it's not longer configurable
Object.defineProperty(o, "example", {get() {}}); // TypeError: Cannot redefine property

【讨论】:

    猜你喜欢
    • 2011-07-10
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多