0

私が達成しようとしているのは、オブジェクトの次の構造です。すべてのプロパティ値は定数文字列であることに注意してください。

ObjA
    ObjB
        prop1
        prop2
        prop3
    ObjC
        prop4
        prop5
    .
    .
    .

したがって、次のsintaxを使用してプロパティ値にアクセスできることを確認してください。

alert(ObjA.ObjC.pro4);

これまでのところ、私は次のようなことを試みましたが成功しませんでした。

    var csi = new Object();
    var cao98 = new Object();
    csi.cao98="";
    csi.cao98.rgi = "NRRGILIG";
    alert (csi.cao98.rgi);

出来ますか?このテーマについては多くの議論があるので、私はこの問題について遠くまで行きたくありません。

4

3 に答える 3

2

3行目cao98では、オブジェクトのプロパティに空の文字列を割り当てていcsiます。

私はあなたが代わりにこれを意味すると思います:

var csi = new Object();
var cao98 = new Object();
csi.cao98=cao98;
csi.cao98.rgi = "NRRGILIG";
alert (csi.cao98.rgi);

このようにオブジェクトを文字通り定義しているだけの場合は、代わりにオブジェクトリテラル構文を使用できます。

var csi = {
    cao98: {
        rgi: "NRRGILIG"
    }
};

alert (csi.cao98.rgi);

最善のアプローチは、オブジェクトを使用しているコンテキストによって異なります。

于 2012-12-05T14:01:30.320 に答える
2

プレーンオブジェクトだけが必要な場合は、オブジェクトのリテラル構文を使用して、すべてを1つの式に書き込むことができます。

var ObjA = {
        ObjB: {
            prop1: 'hello',
            prop2: 'howdy'
        },
        ObjC: {
            prop1: 'hi',
            prop2: 'world'
        }
    }
}

console.log(ObjA.ObjB.prop1 + ' ' + ObjA.ObjC.prop2);
于 2012-12-05T14:02:51.193 に答える
0

試す

    var csi = {
        cao: {
            rgi: 'NRRGILIG'
        }
    };
于 2012-12-05T14:04:05.047 に答える