Javascript对象字面量不允许引用现有值
Javascript object literals don't allow references to existing values?
我有一个对象,定义如下:
var obj = {
'title': 'foo',
'id': '123',
'category': 'aaa',
'meta': 'blah blah'
};
我想子集它,然而,我发现一些行为在JS中,我不理解:
var foo = {obj.title: obj.id}; // doesn't work
var bar = {obj['title']: obj['id']}; // this doesn't either
var baz = {}
baz[obj.title] = obj.id // this works fine.
<标题>为什么? 标题>因为这是ECMAScript 5第11.1.5节中定义的:
属性名必须是:
PropertyName : IdentifierName StringLiteral NumericLiteral
obj.title
既不是标识符名称,也不是字符串或数字字面值。但是,即使您之前将标题分配给另一个变量,您也会看到生成规则不会计算标识符:
生成PropertyName: IdentifierName按如下方式求值:
- 返回与IdentifierName包含相同字符序列的String值。
只是详细说明为什么它不是一个有效的标识符名称:句号(.
)属于标点符号,其他[Po]类别,这不是允许的字符的一部分。其中包括:
UnicodeLetter :Unicode类别中的任何字符"大写字母(Lu)", "小写字母"(Ll)"、"标题字母(Lt)"、"修饰字母(Lm)"、"其他字母(Lo)"或"字母"号(Nl)"。
UnicodeCombiningMark :在Unicode类别"非空格标记(Mn)"或"组合"中的任何字符间距标记(Mc)"
UnicodeDigit :Unicode类别中的任何字符"Decimal number (Nd)"
UnicodeConnectorPunctuation :Unicode类别"连接器标点符号(Pc)"中的任何字符
相关文章:
- IIFE中的函数引用不可用
- Don'不允许将焦点集中在自动完成的选择上
- 覆盖在赢得'不允许点击下面的标记,谷歌地图api v3
- js文件未加载js控制台say's”;不允许加载本地资源”;
- Jquery不允许来自多个选择列表的相同值
- 飞行前响应中的访问控制允许标头不允许Angularjs请求标头字段访问控制允许标题
- 不允许在文本框中使用小数
- TinyMCE全屏不允许出现模式窗口
- 不允许在字段中输入不需要的字符
- 访问控制允许标头不允许X-Requested-Wise
- Chromium内联样式不允许正确的视图
- JQuery代码语法问题?(“不允许内联控制结构”)
- 正则表达式,不允许在javascript中使用负数和小数以及零
- 不允许输入或聚焦的输入类型文本
- IE8不允许javascript引用,但IE9允许
- 不允许在 Angular 表达式中引用 DOM 节点
- Javascript对象字面量不允许引用现有值
- CoffeeScript——不允许在Angular表达式中引用DOM节点
- AngularJS:不允许在 Angular 表达式中引用 DOM 节点
- 谷歌地图引用不允许地图错误