如何删除用Object.defineProperty

时间:2019-08-11 17:43:59

标签: javascript object window getter

如果我这样做:

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

其调用方式为:

你好

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

1 个答案:

答案 0 :(得分:2)

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

'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);

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

  

可配置

     

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