0

我很抱歉将它从这里移开,因为有一些混乱,并感谢格雷回答这个问题以意识到错误。该主题已移至 Javascript:{} 的行为 以进一步讨论。

带有“{}”的单例模式。这是怎么回事:

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是一个对象

乙:-1

参考A.B:-1

对象A.B:-1

到这里一切都清楚了,但一个对象应该承担instanceof它。但是在这里,如果您尝试instanceofA您一起使用,则会出现异常。

为什么?

4

1 回答 1

1

我没有例外:

alert(A instanceof Object); // true

在 Chrome、IE8 和 Firefox 中测试。

于 2009-10-23T10:47:03.510 回答