Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解创建JavaScript对象的不同方法_Javascript_Javascript Objects - Fatal编程技术网

了解创建JavaScript对象的不同方法

了解创建JavaScript对象的不同方法,javascript,javascript-objects,Javascript,Javascript Objects,我正在混乱于不同的代码结构方式,我很难确定创建对象的方式之间的差异。有没有一个简明而彻底的参考资料来阅读这篇文章 在下面的示例中,我可以以相同的方式引用子类1和子类2,它们的行为似乎是相同的。但我知道JS中的每件事都是有原因的。有什么区别?什么时候我应该使用一种样式和另一种样式 非常感谢 var ParentObj = { 'subclass1' : { group1 : { 'property1' : 'val1', '

我正在混乱于不同的代码结构方式,我很难确定创建对象的方式之间的差异。有没有一个简明而彻底的参考资料来阅读这篇文章

在下面的示例中,我可以以相同的方式引用子类1和子类2,它们的行为似乎是相同的。但我知道JS中的每件事都是有原因的。有什么区别?什么时候我应该使用一种样式和另一种样式

非常感谢

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”}将不起作用。在我看来,最好远离边缘案例,要么总是使用引号,要么总是使用安全名称。