【发布时间】:2019-08-11 17:43:59
【问题描述】:
如果我这样做:
Object.defineProperty(window, 'hello',{
get: ()=>"hello to you!"
});
调用如下:
你好
并回复 向你问好! 如何删除它?
【问题讨论】:
标签: javascript object window getter
如果我这样做:
Object.defineProperty(window, 'hello',{
get: ()=>"hello to you!"
});
调用如下:
你好
并回复 向你问好! 如何删除它?
【问题讨论】:
标签: javascript object window getter
您需要在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。
【讨论】:
Object.defineProperty 在对象上定义新属性,默认情况下它不是configurable,因此您无法删除它。