В соответствии с ECMA Script 5.1 Specification, объект Буквенный определен как этот
ObjectLiteral :
{ }
{ PropertyNameAndValueList }
{ PropertyNameAndValueList , }
PropertyNameAndValueList :
PropertyAssignment
PropertyNameAndValueList , PropertyAssignment
PropertyAssignment :
PropertyName : AssignmentExpression
get PropertyName () { FunctionBody }
set PropertyName (PropertySetParameterList) { FunctionBody }
PropertyName :
IdentifierName
StringLiteral
NumericLiteral
PropertySetParameterList :
Identifier
Поскольку []
не допускается ни в одном из IdentifierName
, StringLiteral
и NumericLiteral
, двигатель JavaScript не способен разобрать код. Вот почему он дает синтаксическую ошибку.
Таким образом, на самом деле создать объект с ключами и значениями из массива, необходимо построить объект, а затем присвоить свойства по отдельности, как это
var newObject = {};
newObject[arr[0]] = arr[1];