2017-02-16 89 views
0

代码学院表示有2种方法可以在JavaScript中创建对象。对象属性分配中的语法错误

1.对象文字符号

var myObject = {  
    key: value,  
    key: value,  
    key: value 
}; 

2.对象的构造方法

var myObject = new Object(); 

密钥然后可由此加入:

myObj["name"] = "Charlie"; 
myObj.name = "Charlie"; //shorthand for the first 

被要求建立3 o bjects,我尝试了不同的方式来生成具有相同值的对象,但是使用上面提供的模板发生错误。我的代码粘贴如下:

var object1 = { 
    1: 2, 
    7: 3, 
    4: 5 
}; 

var object2 = new Object(); 
object2['1'] = 2; 
object2['7'] = 3; 
object2['4'] = 5; 

var object3 = new Object(); 
object3.1 = 2; 
object3.7 = 3; 
object3.4 = 5; 

代码学院给了我一个错误,并找出它到底是什么,我用Chrome的控制台。 Chrome的控制台上分别捆扎每个对象的创建,object1object2可以创建,但是不object3其产生错误:Uncaught SyntaxError: Unexpected number

更改object3的代码(从数字改变键为字符串):

var object3 = new Object(); 
object3.'1' = 2; 
object3.'7' = 3; 
object3.'4' = 5; 

产生错误:Uncaught SyntaxError: Unexpected string

是否可以使用此模板/布局创建object3以生成object1的值,或者密钥是否可以不是数字或字符串?字符串,但不是创建object2的密钥的数字。

+1

的属性名称不能以使用“点阵数字开头' 句法。 object3._1将起作用,但是因为下划线(以及$和字母字符)是合法的语法。 –

回答

2

当使用点符号,按键应以同样的方式变量命名为(开始以字母或_,并且只包含字母,数字和_)。

如果密钥是无效的以用作点符号那么它可以使用括号符号这样使用:

obj["key goes here"]; 

由于174不适用于点表示法,该只有这样才能使用它们作为关键是这样的:obj["4"] ...

这是关于对象的基础知识的MDN page

实施例:

这些键是有效的点表示法:

abc; 
_a; 
R2D2; 
_; 
_0; 
a________a; 

帖不是:

k-ey; 
a b a; 
99; 
k.e.y; 
@@;