Javascript:关于删除行为

时间:2014-03-04 20:56:20

标签: javascript override

我正在阅读interesting article,了解JS中的删除。

我了解通过变量声明 创建的属性不能被删除,或者更准确地说,具有DontDelete属性,而属性是通过属性创建的分配 可以删除。

但是我对财产重载如何与这个想法一起工作感到困惑:

> var GLOBAL_OBJECT = this;
undefined

> var declared = "I cannot be deleted";
undefined

> delete declared;
false

> assigned = "I can be deleted";
'I can be deleted'

> delete assigned;
true

> // Now, I will override `declared` ...

> declared = "I am overrided - now deletable?";
'I am overrided - now deletable?'

> declared;
'I am overrided - now deletable?'

> delete declared;
false

在我看来,当在变量对象中创建属性时,属性属性预定。因此,当您尝试覆盖属性时,可以预期它将被覆盖,但属性属性不会被覆盖。

这是对的吗?

2 个答案:

答案 0 :(得分:0)

你所谓的“覆盖”属性实际上是一项常规任务。您只需更改变量的值即可。变量的所有属性都保持不变,包括你提到的DontDelete。

对于示例中的assigned变量,变量是隐式定义的,未使用var关键字声明,这就是使其能够被删除的原因。

答案 1 :(得分:0)

我太匆忙地读了这篇文章。

以下是解决此主题的文章的引用,

  

请注意,在属性创建期间,确定了属性(即没有设置属性)。以后的分配不会修改现有属性的属性。了解这种区别非常重要。