所以问题很简单,如果安全(明智地)宣布方法被称为"删除"在JavaScript中。例如:
var request = {
delete : function (url) {
// Some code...
}
}
request.delete('http://page.dev/users/1');
我已经在Firefox中对此进行了测试并且功能正常,但只是想知道它是否会导致其他浏览器出现问题;或者一般来说,这是一个好习惯。
答案 0 :(得分:7)
如果您使用this['style']
,但this.style
使用{{1}},则永远不会出现问题,您应该避免使用保留字does includes delete。根据规范,使用保留字作为属性名称实际上是可以的,但是无论如何我都会避免它,因为有一些不好的实现(对于使用保留字而言,无论上下文如何,它通常都会有一种糟糕的感觉)。 p>
答案 1 :(得分:7)
标识符名称是根据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)
我会使用与其他建议不同的关键字 - 您可以使用remove
或purge
之类的同义词 - 您可以理解。
但更重要的是 - 确保您正在进行服务器端验证以确保呼叫的可读性。否则,任何人都可以使用“http://page.dev/users/1
”
答案 5 :(得分:0)
您应该注意,即使使用括号语法访问属性也不是所有浏览器都是安全的。
无论如何,Internet Explorer 7和8都会崩溃。