了解创建JavaScript对象的不同方法
我正在混乱于不同的代码结构方式,我很难确定创建对象的方式之间的差异。有没有一个简明而彻底的参考资料来阅读这篇文章 在下面的示例中,我可以以相同的方式引用子类1和子类2,它们的行为似乎是相同的。但我知道JS中的每件事都是有原因的。有什么区别?什么时候我应该使用一种样式和另一种样式 非常感谢了解创建JavaScript对象的不同方法,javascript,javascript-objects,Javascript,Javascript Objects,我正在混乱于不同的代码结构方式,我很难确定创建对象的方式之间的差异。有没有一个简明而彻底的参考资料来阅读这篇文章 在下面的示例中,我可以以相同的方式引用子类1和子类2,它们的行为似乎是相同的。但我知道JS中的每件事都是有原因的。有什么区别?什么时候我应该使用一种样式和另一种样式 非常感谢 var ParentObj = { 'subclass1' : { group1 : { 'property1' : 'val1', '
var ParentObj = {
'subclass1' : {
group1 : {
'property1' : 'val1',
'property2' : true,
'property3' : 'val3'
},
group2 : {
'property1' : 'val1',
'property2' : true,
'property3' : 'val3'
}
} //end first subclass
subclass2 : {
group1 : 'sharepoint',
specialstuff: {
specprop1: ["some settings", "some more settings", "lots of settings", "maybe a switch", "etc etc etc"],
specprop2 : 'some plain text message'
}
}
}; //end ParentObj
唯一的区别是,您可以通过这种方式创建无效的符号名称:
var x = { 'some text': { prop1: true } }; // Valid
var x = { some text: { prop1: true } }; // Invalid
您只能通过索引器(又名
x['some text']
)访问该文件,但它可以工作 您当前使用的语法是对象文字语法,考虑到您在这里所展示的内容,这是完全可以接受的。如果您需要将成员函数添加到多个类中,那么您需要仔细阅读。否则,在使用这种类型的语法声明属性时,您做得很好。:
var myObject = {group1 : 'sharepoint'};
当属性名不是合法的javascript变量名时,必须在其周围使用引号。这将包括任何时候它包含空格、以数字开头或包含javascript变量名中不合法的任何其他字符(如+-*&^%)。总是包含引号是安全的。如果属性名称是安全的,则不需要引号
这里有一个解释,说明什么类型的名称需要引号:。如果你不确定,把引号放进去。如果希望保持一致,请始终使用引号,或者永远不要使用引号,也不要使用非合法javascript变量名的标识符。您的选择。假设您指的是创建对象文本及其键的不同方法,那么用引号括住键将是最好的方法。原因有很多: 答:如果你想给键起一个超过一个单词、一个符号或其他字符的名字,你必须使用引号。
var obj = {"some name": 1337, "¤": "š"};
alert(obj["some name")); // Shows "1337"
alert(obj["¤"]); // Shows "š"
B:使用引号允许你使用保留字。没有它们,如果密钥的名称是保留字,则可能无法访问该密钥。var obj = {"class": 10}; // "Class" is a reserved word
alert(obj["class"]); // Shows "10"
// Using "obj.class" might give unexpected errors in some browsers
C:如果需要的话,总是使用引号几乎意味着它已经准备好JSON了。那么实际的问题是什么?你想知道这些报价吗?如果您想了解对象:实际上使用数字作为键是可以的,
{42:'answer'}
将起作用。但是现在允许混合数字和字母。所以vary={4zz:“zoo”}代码>将不起作用。在我看来,最好远离边缘案例,要么总是使用引号,要么总是使用安全名称。