我很抱歉将它从这里移开,因为有一些混乱,并感谢格雷回答这个问题以意识到错误。该主题已移至 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
它。但是在这里,如果您尝试instanceof
与A
您一起使用,则会出现异常。
为什么?