Я прошу прощения, чтобы переместить его отсюда как
была некоторая путаница и благодаря
Грей за ответ это понял
ошибка. Тема была перемещена в
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
содержит ссылку на объект 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
, вы получите исключение.
Почему?