2014-08-29 84 views
1

阅读这个问题时,从一个JavaScript对象中删除一个属性:How do I remove a property from a JavaScript object?如何使用严格模式

但是我的代码使用'use strict';在全局声明,这意味着它是存在于整个文件。

delete语句在严格模式下被禁止(不起作用)。 Documentation

如何在使用严格模式时从对象中删除属性,而不必诉诸于克隆和循环属性,跳过要删除的属性?

更新和澄清

我需要把它发送到服务器,抱怨未知属性之前删除对象的属性。

+0

你的问题似乎是建立在错误的前提下(即,'delete'报表是严格禁止的模式)。你究竟在做什么*试图做什么?实际上你观察到的是什么问题?一个小而完整的代码示例可以帮助您重现问题。 – apsillers 2014-08-29 16:25:22

+0

那里说'delete'语句被禁止或没有效果? – Bergi 2014-08-29 16:25:24

+0

@Bergi阅读文档。 '第三,严格模式禁止删除普通名称。在严格模式下删除名称是语法错误:' – 2014-08-29 16:26:08

回答

4

delete不是严格禁止在严格模式。

  1. 在严格模式下删除不可删除的属性会引发错误。在非严格模式下,它会默默地失败。无论哪种方式,除了克隆对象外都是不可能的。

  2. 您不能删除普通名称;会引发语法错误。如果变量是一个全局变量,那么可以像这样绕过它;

    // Imagine we're global here. 
    var foo = 4; 
    
    delete foo; // syntax error 
    delete window.foo; // works. 
    
+2

感谢您的澄清,它现在是有道理的 – 2014-08-29 16:28:00