0

混乱があったため、ここから移動することをお詫びします。間違いに気付くためにこれに答えてくれたグレイに感謝します。このトピックは Javascript: Behaviour of {} に移動され、さらに議論されました。

「{}」を使用したシングルトン パターン。ここにそれがどのようにある:

var A = {
 B : 0
};

// A is an object?
document.write("A is an " + typeof A);

オブジェクトのクローンを作成してみましょうA

var objectOfA = new Object(A);
objectOfA.B = 1;

//Such operation is not allowed!
//var objectOfA = new A();

var referenceOfA = A;
referenceOfA.B = -1;

document.write("A.B: " + A.B);
document.write("<br/>");

上記referenceOfA.Bは object の参照を保持しているAので、 の値を変更するとreferenceOfA.B必ず に反映されA.Bます。

document.write("referenceOfA.B: " + referenceOfA.B);
document.write("<br/>");

クローンが正常に作成された場合、objectOfA値を保持する必要があります1

document.write("objectOfA.B: " + objectOfA.B);
document.write("<br/>");

結果は次のとおりです。

A はオブジェクトです

AB: -1

referenceOfA.B: -1

objectOfA.B: -1

ここまではすべて明確ですが、オブジェクトがinstanceofそれを引き継ぐ必要があります。ただし、ここで使用しようとすると、例外が発生instanceofします。A

なんで?

4

1 に答える 1

1

例外はありません:

alert(A instanceof Object); // true

Chrome、IE8、Firefox でテスト済み。

于 2009-10-23T10:47:03.510 に答える