1

JavaScript は比較的新しいので、以下の要件を達成するための最良のアプローチは何か疑問に思っています。JSON オブジェクト (RPC 要求オブジェクト) を作成したかったので、何らかの構造を適用する必要があります。私が学んだように、JS は動的言語であるため、いつでも任意の型をオブジェクトに追加できます。しかし、JSON リクエストを構築するために入力できるクラスを定義するのが好きです。

var RecReq = {
            ID:{},
            HeaderLevel:{},
            Content:{} //Content object goes here
        },
        HeaderLevel = {
            HeaderID:{},
            Note:{}
        },
        Content = {
            Item: [] //Array of Item goes here
        },
        Item = {
            IDs:[]
        };

    function ReceiveObj() {
        this.RecReq = RecReq,
            this.HeaderLevel = HeaderLevel,
            this.Content = Content,
            this.Item = Item
    };
    return new ReceiveObj();

上記のコードには多くの間違いがあると確信しています。配列が初期化された状態でオブジェクトが作成されたとは思いません。push()返されたオブジェクトでは、iten を Content に挿入する操作を行うことができません。

これにどのようにアプローチしますか。その場でオブジェクトを作成しますか、それとも何らかの構造を強制するオブジェクトを定義する方が良いですか。

4

1 に答える 1

1

コードが示唆するように、インスタンスに外部オブジェクトを継承させたい場合、1 つのアプローチは「クラス」のプロトタイプを割り当てることです (JS のクラス用語で考えることに注意してください - Java などの意味でのクラスではありません)。 ) オブジェクトに。

var obj = { 
    prop_1: 'foo',
    prop_1: 'bar'
}
function Something() {
    alert(this.prop_1); //alerts "foo"
}
Something.prototype = obj;
var something = new Something();

これは 1 つの方法にすぎません。継承を制御するための多くのパターンがあります (また、継承の概念に近づかなくても目的を達成できる他のパターンもあります)。

動作しpush()ないのは、コードでContentはオブジェクトですが、プロトタイプpush()のメソッドです。Arrayつまり、push()配列のみに入れることができます。おそらくContent.Item、これは配列です。

最後に、名前を大文字にすることは避けます。JavaScript では、単に呼び出すのではなく、インスタンス化する必要があることを示すために、クラス シミュレーション (ReceiveObj など) で使用される関数でのみこれを行う傾向があります。

于 2012-06-30T12:54:51.783 に答える