为什么JavaScript不允许模板字符串作为对象属性键?例如,当我输入:
foo = {`bar`: 'baz'}
到NodeJS
REPL中,它会引发SyntaxError
带有长堆栈跟踪的“意外模板字符串”。属性值很好,但是,这并不出乎意料。浏览器中也会发生类似的错误,例如Firebug抛出一个SyntaxError
带有“无效属性ID”的错误。
“计算的属性名称”中允许使用模板字符串。例如,这在所有支持以下语法的浏览器中都可以完美编译:
var foo = {
[`bar` + 1]: `baz`
};
并创建对象{"bar1": "baz"}
。
为什么不允许模板字符串作为文字对象键?
是出于性能原因吗?模板字符串必须在运行时进行编译(如果我错了,请纠正我),这意味着每次遇到此对象时,解释器都必须计算对象名称。考虑到“煮熟的”模板字符串之类的因素,这看起来可能会变慢,尽管自ES5以来我们已经有了吸气剂和吸气剂。Firefox并没有将其提及为错误,这就是为什么我发现它出乎意料。将来的某个时间会允许使用该语法吗?
为什么不允许模板字符串作为文字对象键?
模板字符串是表达式,而不是文字1。您只能对属性名称使用字符串文字(和标识符),而对于其他所有内容(不是静态的),都需要计算出的属性名称。
是出于性能原因吗?
不,那不太可能。这是为了简化解析,并使其易于将常量(静态已知)属性名称与动态计算的属性名称区分开。
大多数情况下,这是一项没人需要的功能。它不会简化或缩短任何事情,并且已经可以实现。
将来的某个时间会允许使用该语法吗?
不。
1:即使将它们称为“模板文字”,从技术上讲,它们也不是文字。并且:模板甚至不需要是字符串,它们可以求值任何东西。
问题内容: 根据官方的JavaScript文档,您可以使用整数定义对象文字属性名称: 此外,您可以使用数字或字符串文字作为属性的名称。 像这样: 我的问题是,如何引用以整数作为名称的属性?我尝试了平常的尝试,但是遇到了错误。我能想到的唯一解决方法是使用循环。有什么建议? 问题答案: 您可以像引用数组一样引用对象的属性,并使用或
问题内容: 如果我有一个如下所示的javascript对象 我有一个既传递对象又传递属性的函数,像这样 身体会是什么样? 问题答案: 您不需要它的功能-只需使用括号符号即可: 这等于点表示法,除了在使用方括号表示法时也可能来自变量,函数返回值等的事实。 如果需要它的功能,则为: 为了回答下面与原始问题没有直接关系的一些注释,可以通过多个括号引用嵌套对象。如果您有这样的嵌套对象: 您可以访问财产的,
问题内容: 假设我们只有 我们如何将属性设置为某个值(例如“ hello world”)?所以我想实现这一点,尽管我们只有字符串中的属性名称: 问题答案:
本文向大家介绍C#通过属性名字符串获取、设置对象属性值操作示例,包括了C#通过属性名字符串获取、设置对象属性值操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#通过属性名字符串获取、设置对象属性值操作.分享给大家供大家参考,具体如下: #通过反射获取对象属性值并设置属性值 0、定义一个类 1、通过属性名(字符串)获取对象属性值 2、通过属性名(字符串)设置对象属性值 #获取对象的
问题内容: 如果我的对象包含以%符号开头的属性,那么如何获取其值。 如果我用 我得到一个错误 我知道我不应该在变量名中使用%,但这不是我的工作,我坚持使用它。 问题答案:
问题内容: 我有一些具有各种属性的JSON,其中大多数是简单数据类型。但是,我在JSON中有一个属性,当我将其反序列化为C#类时,我只需要将其反序列化为字符串即可。 JSON示例: 除了将是有效的JSON对象外,“ json”对象没有任何设置结构。 因此,在上面的示例中,“ json”的值是一个JSON对象-但是当它反序列化时,我需要将它作为字符串。 因此,如果我的C#类是: 然后,如果我使用: