- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
保留字可以用作对象的属性名吗?
这个问题是在之前的 Stack Overflow 问题中间接提出的:Browser support for using a reserved word as a property name in JavaScript . Alex Wayne 的答案似乎得到了普遍的共识。 :
You can use those words, but only as strings and not shorthand properties.
foo['class']; // cool
foo.class; // not cool
虽然我认为他们在这方面的知识可能比我多,并且在某些情况下使用保留字可能是一个坏主意,但我认为他们的结论基于两点是错误的:
使用保留字作为“速记”属性测试保留字
HTMLFormElement 使得 not 无法在“速记”中使用保留字
首先,使用保留字列表,将每个作为属性添加到 Object
和 HTMLElement
, 均为 obj["word"]
和 obj.word
, 然后检索为 obj["word"]
和 obj.word
.在 63 个案例中,所有 8 个测试都正常工作。
其次,HTMLFormElement 需要这项工作,因为它使用速记符号检索其元素。如果 <input name='typeof' value='scalar' />
是表单的一个元素,那么 form.typeof
== “标量”。
根据我的经验,保留字通常是数据造成的(例如,名为“private”的列),而不是程序造成的。因此,它们会污染 JSON 对象,并从那里污染输入,然后再从那里污染 HTMLFormElement。简而言之,如果没有大量(恕我直言,不必要的)工作,就不可能让保留字不被迫以简写形式正确工作。
在我看来这些真正的问题:
需要注意不要与现有的属性冲突,而不是保留字
(很多如果不是全部)变量不能是保留字
使用保留字作为属性可能(但不一定)令人困惑
那么这个结论是否正确,即保留字作为属性名称,并以字符串或简写形式访问它们就可以了 - 只要对这种情况应用一点常识?
最佳答案
在 ECMAScript 中,从 ES5 开始,保留字可以用作“在 buff”中的对象属性名称。这意味着在定义对象字面量时不需要将它们“包裹”在引号中,并且可以在对象上取消引用(用于访问、分配和删除),而无需使用方括号索引表示法。
也就是说,保留字仍然可以不用作标识符名称。这在规范中非常明确地说明,并且在这里有些强调(如果您不想因阅读实际语言规范而流血)...
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words
The following are keywords and may not be used as variables, functions, methods, or object identifiers, because ECMAScript specifies special behavior for them:
关于javascript - 使用保留字作为属性名,重温,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7022397/
我正在尝试关闭一个框架但打开一个新框架。 我的应用程序有页面A,一个带有一些控件和特定按钮的JPanel,当用户单击该按钮时,我希望页面A消失并出现页面B(页面B有控件这取决于用户在页面 A) 上所做
保留字可以用作对象的属性名吗? 这个问题是在之前的 Stack Overflow 问题中间接提出的:Browser support for using a reserved word as a pro
我想在普通 C 中初始化一个具有以下要求的字符串数组: (A) 我需要头文件中的字符串,因为一些其他模块将它们用作普通字符串,所以我在头文件中声明: extern const char* const
我目前正在解决教科书上的问题,准备期末考试,并且陷入了方法和数组的困境。我之前看到其他人发布过关于这个问题的帖子,但我认为他们正在寻求作业帮助,而阅读该帖子对我没有帮助。提示: 在程序中,编写一个接受
我有一个 "a b.c d.e" 形式的输入(不包括引号)我想解析成整数值,如 a1=a, a2=b, a3=c,..等等。但诀窍是 "." 之后的值也可能会丢失,因此,"a b d.e"、"a b
如何从 PHP 中的多维数组中删除重复值? 初始数组: array ( 0 => array ( 'following_userid' => '88', ), 1 =>
我喜欢 Dylan 对“迭代 Makefile 中的列表”这个问题的回答, Iterating over lists in Makefiles?并尝试做类似的事情,但遇到了麻烦。也许sonmeone可
关于迁移遗留多线程应用程序的 MSDN(来自 this 关于线程异常处理的页面): In general, the change will expose previously unrecognized
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我想知道如何使用 Firefox 插件在加载页面时修改页面的 URL。我收到了诸如the following之类的建议。具体来说,当用户通过地址栏访问“https://www.google.com”时
这个问题是从理想主义的角度出发的。//前向声明 我一直在学习 makefile 的基础知识,我发现自己想知道被问到的同样问题 here关于 header 依赖项。从实际的角度来看,我很高兴有解决 he
阅读时间太长。 使用 Task.ConfigureAwait(continueOnCapturedContext: false)可能会引入冗余线程切换。我正在寻找一个一致的解决方案。 长版。 Conf
我很抱歉,因为之前已经有人问过这个问题( https://stackoverflow.com/a/5570717/3529404 )。然而,我对用户克里斯普拉特接受的答案遇到了麻烦。该代码通常有效 -
Firefox行高错误是一种痛苦。简而言之,它阻止了通过浏览器样式 line-height: normal !important 声明手动设置 button 元素上的 line-height 可以'不
我是一名优秀的程序员,十分优秀!