Javascript对象中的键只能是字符串吗?
jshashtable状态:
JavaScript的内置对象的确使用方括号表示属性来提供哈希表功能,前提是您的键是字符串或数字:
据我所知,键只是字符串,(因为数字无论如何都被强制转换为字符串)。我只想检查一下,确保上面所说的是假的(因为键不能是数字)。
ECMA标准是否对此做了任何说明。
还是实现特定于浏览器?
回答:
JavaScript的内置对象确实使用属性的方括号表示法提供哈希表功能,前提是您的键是字符串或数字
使用点表示法按名称访问属性:
MemberExpression。 标识符名称
CallExpression。 标识符名称
或括号符号:
MemberExpression [表达式]
CallExpression [表达式]
点符号通过以下语法转换进行解释:
MemberExpression。 标识符名称
在行为上与
MemberExpression [
同样
CallExpression。 标识符名称
在行为上与
CallExpression [
其中, _< identifier-name-
string>_是一个字符串文字,其中包含在处理Unicode转义序列后与IdentifierName相同的字符序列。
因此,当使用点表示法时,点后的位必须符合IdentifierName的条件。但是,在使用方括号时,会提供一个 表达式 ,该表达式将求值并解析为字符串。
简要地说,提供了方括号符号,以便可以使用 表达式 访问属性,例如
var y = {};var x = 'foo';
y[x] = 'foo value';
在上面,x
以方括号提供,以便对其进行求值,并返回字符串’foo’。由于此属性尚不存在y
,因此已添加。然后为的foo
属性y
分配一个值’foovalue’。
一般而言,将评估方括号中的 表达式 并toString()
调用其方法。该值用作属性名称。
在点属性访问方法中,不评估标识符,因此:
y.bar = 'bar value';
创建一个bar
具有值的属性bar value
。
如果要创建数字属性,则:
y[5] = 5;
将评估5
,如果发现它不是字符串,则调用(或多或少)Number(5).toString()
返回字符串5
,该字符串用于属性名称。然后5
为其分配值,该值是一个数字。
以上是 Javascript对象中的键只能是字符串吗? 的全部内容, 来源链接: utcz.com/qa/430372.html