Шаблон синглтона с {}? - PullRequest
       8

Шаблон синглтона с {}?

0 голосов
/ 23 октября 2009

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

Почему?

1 Ответ

1 голос
/ 23 октября 2009

Я не получаю исключения:

alert(A instanceof Object); // true

Проверено в Chrome, IE8 и Firefox.

...