3

コードを構造化するさまざまな方法をいじっていて、オブジェクトを作成する方法の違いを特定するのに苦労しています。このようなものを読むための簡潔で徹底的なリファレンスはありますか?

以下の例では、subclass1とsubclass2を同じように参照でき、それらは同じように動作しているように見えます。しかし、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
4

4 に答える 4

1

現在使用している構文はオブジェクト リテラル構文であり、ここで示した内容を考えると完全に受け入れられます。複数のクラスにメンバー関数を追加する必要がある場合は、Prototypal Inheritanceを読んでください。そうでなければ、あなたはうまくやっています IMO.

于 2011-07-11T20:06:11.787 に答える
1

オブジェクトリテラルとそのキーを作成するさまざまな方法を意味すると仮定すると、キーを引用符で囲むのが最善の方法です。いくつかの理由があります。

A: 1 つの単語、記号、またはその他の文字よりも長い名前をキーに付けたい場合は、引用符を使用する必要があります。

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 対応であることを意味します。

于 2011-07-11T20:25:46.850 に答える
0

唯一の実際の違いは、無効なシンボル名を次のように作成できることです。

var x = { 'some text': { prop1: true } }; // Valid
var x = { some text: { prop1: true } }; // Invalid

インデクサー(別名)を介してのみアクセスできますがx['some text']、機能します。

于 2011-07-11T20:05:14.303 に答える
0

このタイプの構文でプロパティを宣言する場合:

var myObject = {group1 : 'sharepoint'};

プロパティ名が有効な javascript 変数名でない場合は常に、プロパティ名を引用符で囲む必要があります。これには、スペースが含まれる、数字で始まる、または JavaScript 変数名に使用できないその他の文字 (+-*&^% など) が含まれる場合が含まれます。常に引用符を含めることは安全です。プロパティ名が安全な場合、引用符は必要ありません。

引用符が必要な名前の種類の説明を次に示します: http://www.codelifter.com/main/tips/tip_020.shtml。よくわからない場合は、引用符を入れてください。一貫性を保ちたい場合は、常に引用符を使用するか、引用符を使用せず、正当な JavaScript 変数名ではない識別子を使用しないでください。あなたの選択。

于 2011-07-11T20:19:44.507 に答える