【问题标题】:How to delete a window getter defined with Object.defineProperty如何删除使用 Object.defineProperty 定义的窗口吸气剂
【发布时间】:2019-08-11 17:43:59
【问题描述】:

如果我这样做:

Object.defineProperty(window, 'hello',{ 
   get: ()=>"hello to you!"
});

调用如下:

你好

并回复 向你问好! 如何删除它?

【问题讨论】:

    标签: javascript object window getter


    【解决方案1】:

    您需要在defineProperty中传递的描述符对象中添加另一个属性,即configurable: true,之后您可以使用delete运算符删除属性购买。

    'use strict'
    Object.defineProperty(window, 'hello',{ 
      get: ()=>"hello to you!",
      configurable: true //make this true
    });
    console.log(window.hello);
    delete window.hello
    // hello is deleted from window
    console.log(window.hello);

    默认情况下,如果您不将configurable 设为描述符对象的true,则它为假,来自docs

    可配置

    当且仅当此属性描述符的类型可能是 已更改,并且是否可以从相应的属性中删除该属性 目的。默认为 false。

    【讨论】:

    • 那么没有这个就不能删除了吗?
    • @Zibri 如果您使用Object.defineProperty 在对象上定义新属性,默认情况下它不是configurable,因此您无法删除它。
    • 好的.. 我只是想确定一下。谢谢。
    猜你喜欢
    • 2023-02-02
    • 1970-01-01
    • 2017-04-19
    • 2018-11-16
    • 2019-09-27
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    相关资源
    最近更新 更多