在JavaScript中声明删除方法是否安全

时间:2013-09-13 19:09:36

标签: javascript

所以问题很简单,如果安全(明智地)宣布方法被称为"删除"在JavaScript中。例如:

var request = {
    delete : function (url) {
        // Some code...
    }
}
request.delete('http://page.dev/users/1');

我已经在Firefox中对此进行了测试并且功能正常,但只是想知道它是否会导致其他浏览器出现问题;或者一般来说,这是一个好习惯。

6 个答案:

答案 0 :(得分:7)

如果您使用this['style'],但this.style使用{{1}},则永远不会出现问题,您应该避免使用保留字does includes delete。根据规范,使用保留字作为属性名称实际上是可以的,但是无论如何我都会避免它,因为有一些不好的实现(对于使用保留字而言,无论上下文如何,它通常都会有一种糟糕的感觉)。 p>

答案 1 :(得分:7)

根据language specification

  

标识符名称是根据Unicode标准第5章“标识符”部分中给出的语法进行解释的标记,并进行了一些小的修改。 标识符 IdentifierName ,它不是 ReservedWord (请参阅7.6.1)。

这意味着您不能将delete用作变量或函数名称,但可以将其用作对象属性名称。在之前版本的规范中并非如此,这就是为什么大多数其他答案都建议您完全避免使用保留字。但是,在符合ES5的实现中,应该没有问题。

答案 2 :(得分:2)

不,这不是一个好主意,因为删除是一个关键字。在最新版本中,它们限制了会导致问题的位置,但仍有一些。

避免任何问题的一种方法是使用:

var request = {
    "delete" : function (url) {
        // Some code...
    }
}
request["delete"]('http://page.dev/users/1');

但这可能有点不那么优化了,而且有点难看。我会选择其他名称,例如“删除”。

答案 3 :(得分:1)

delete位于JavaScript reserved words list,自行承担风险。

  

删除object.property

     

删除对象['property']

答案 4 :(得分:0)

我会使用与其他建议不同的关键字 - 您可以使用removepurge之类的同义词 - 您可以理解。

但更重要的是 - 确保您正在进行服务器端验证以确保呼叫的可读性。否则,任何人都可以使用“http://page.dev/users/1

构建删除调用

答案 5 :(得分:0)

您应该注意,即使使用括号语法访问属性也不是所有浏览器都是安全的。

无论如何,Internet Explorer 7和8都会崩溃。