0

次のようなオブジェクトがあります。

var BigObject = {
    'CurrentInt': 0,
    'CurrentBool': false,
    'CurrentObject': {}
}

次に、次のように SomeObject を宣言します。

var SomeObject = {
      'SomeString': "",
      'SomeInt': 0
}

これらの 2 つの定義は、オブジェクトが初期状態にあるときのオブジェクト用であり、私が推測する型定義のようなものです。newここで、 SomeObject をに割り当てたいと思いBigObject['CurrentObject']ます。私はこれを試しました:

BigObject['CurrentObject'] = new SomeObject();

しかし、それは機能していません。現時点では、参照による単純な割り当てを行うだけBigObject['CurrentObject'] = SomeObject;で、SomeObject の値をリセットする必要がある場合は、初期段階で SomeObject の各プロパティを再宣言する関数を実行するだけです。

しかし、このnewキーワードを使用して、BigObject のプロパティである再利用可能なオブジェクト タイプを作成するにはどうすればよいでしょうか。

ありがとう。

4

3 に答える 3

3

new関数でのみ使用でき、コンストラクターとして実行できます。

function SomeObject() {
    this.SomeString = "";
    this.SomeInt = 0;
}

あなたがしたことは以下と同等です:

var SomeObject = new Object();
SomeObject.SomeString = "";
SomeObject.SomeInt = 0;
于 2012-06-08T17:21:36.497 に答える
2

型を定義している場合は、コンストラクター関数を使用する必要があります。

var SomeObject = function() {
    this.someString = "";
    this.someInt = 0;
}

var BigObject = function() {
    this.currentInt = 0;
    this.currentBool = false;
    this.currentObject = new SomeObject();
}

これらのコンストラクターを定義したら、次のことができnewます (インスタンスを作成します)。

var myBigObject = new BigObject();
console.log(myBigObject.currentObject);
于 2012-06-08T17:21:22.723 に答える
1

JavaScript クラスを使用します。

function SomeObject() { }
SomeObject.prototype.someString = "";
SomeObject.prototype.someInt = 0;

function BigObject(){ this.currentObj = new SomeObject; }
BigObject.prototype.currentInt = 0;
BigObject.prototype.currentBool = false;
BigObject.prototype.currentObj = null;

var a = new BigObject;

a.currentObj instanceof SomeObject;  // true
于 2012-06-08T17:23:56.537 に答える