我很抱歉将它从这里移开 有一些困惑和感谢 灰色为了回答这个实现了 错误。该主题已移至 Javascript: Behavior 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
包含对象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是一个对象
A.B:-1
referenceOfA.B:-1
objectOfA.B:-1
到此为止,一切都很清楚,但是对象应该在其上instanceof
。但是,如果您尝试将instanceof
与A
一起使用,则会出现例外情况。
为什么?
答案 0 :(得分:1)
我没有例外:
alert(A instanceof Object); // true
在Chrome,IE8和Firefox中测试过。