单身模式与{}?

时间:2009-10-23 10:39:59

标签: javascript unobtrusive-javascript

  

我很抱歉将它从这里移开   有一些困惑和感谢   灰色为了回答这个实现了   错误。该主题已移至   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。但是,如果您尝试将instanceofA一起使用,则会出现例外情况。

为什么?

1 个答案:

答案 0 :(得分:1)

我没有例外:

alert(A instanceof Object); // true

在Chrome,IE8和Firefox中测试过。