cc *_*ung 43 javascript json properties reserved-words javascript-objects
可以Object用作对象的属性名称吗?
这个问题是间接提出的一个stackoverflow问题.答案似乎是@Squeegy的普遍共识:
你可以使用这些单词,但只能作为字符串而不是速记属性 -有助于提供保留字列表的链接HTMLElement很酷,而obj["word"]不是
虽然我认为@Squeeky在这个领域可能比我更有知识,但在某些情况下使用保留词可能是个坏主意,我认为他的结论基于两点是错误的:
使用它们作为"速记"属性来测试保留字
在HTMLFormElement使得它不可能不以"速记"使用保留字
首先,使用保留字列表,每个都作为属性添加到obj.word和obj["word"],并作为obj.word和<input name='typeof' value='scalar' />,然后作为form.typeof和检索Object.在所有63个案例中,所有8个测试都正常工作.
其次,HTMLFormElement需要这样做,因为它使用简写表示法在其元素中检索.如果HTMLElement是表单的元素,则obj["word"]=="标量".
根据我的经验,保留字通常是数据(例如,名为"私人"的列),而不是程序造成的.因此,它们会污染JSON对象,并从那里污染INPUT,然后从那里污染HTMLFormElement.简单地说,没有大量(不需要的)工作,就不可能保留保留的单词不被强制用于速记.
在我看来这些真正的问题:
需要注意不要与现有财产发生冲突,而不是保留字
(很多,如果不是全部)变量不能保留字
使用保留字作为属性可能(但不一定)令人困惑
这个结论是否正确,保留字作为属性名称,并以字符串或简写形式访问它们就好了 - 只要对情况应用一点常识?
小智 49
在ECMAScript中,从ES5开始,保留字可以用作"buff中的对象属性名称".这意味着它们不需要定义对象常量时在引号被"衣服",并且它们可以被解除引用(用于访问,分配和删除)上的对象,而不必使用方括号索引符号.
也就是说,保留字仍然不能用作标识符名称.这在规范中非常明确地说明,并且在这里有点强调(如果你不想让你的眼睛因为必须阅读实际的语言规范而流血)......
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words
以下是关键字,不能用作变量,函数,方法或对象标识符,因为ECMAScript为它们指定了特殊行为:
我不太确定你想要做什么,所以我能给出的唯一答案是:是的,可以使用保留字作为属性名称.
(但是两个小的评论:foo["class"]没问题,没有foo[class].你应该使用任何方式 form.elements["xyz"]而不是form.xyz访问一个名为的元素xyz.)
是的,可以使用。
简短说明一下,如果您使用YUI压缩器,则必须在属性名中加上等于js保留字之一的引号。
例如,这不会压缩
var a = { case : "foo"}; // syntax error, "invalid property id"
a.for = "bar"; // syntax error, "missing name after . operator"
Run Code Online (Sandbox Code Playgroud)
这会做
var a = { "case" : "foo"}; //OK
a["for"] = "bar"; //OK
Run Code Online (Sandbox Code Playgroud)
这是可以使用YUI Compressor进行在线JavaScript / CSS压缩的地方。
| 归档时间: |
|
| 查看次数: |
26601 次 |
| 最近记录: |