Проверьте, плс, корректность утверждения:
function Figure() { }
Figure.prototype = {
active : true,
coords : [0, 0]
};
Figure.prototype.constructor = Figure;
var fig1 = new Figure();
var fig2 = new Figure();
fig1.active = false;
fig1.coords[0] = 10;
alert(fig2.active); // => true
alert(fig2.coords[0]); // => 10
// причина изменения coords[0] у второго объекта (fig2), в том, что при
// изменении элемента массива coords первым объектом (fig1), сначала
// был произведён поиск массива для доступа к его элемнту внутри объекта
// fig1, массив не был найден и далее был произведён поиск в прототипе,
// где он и был найден. Элемeнты находящиеся в прототипе функции разделяются
// всеми созданными функцией объектами. Причина же неизменности переменной
// active у fig2 заключается в том, что при присвоении свойству в объекте,
// если свойство отсутствует, оно просто создаётся.
// fig1.active = false; создал свойство в fig1,
// alert(fig2.active); вывел значение из прототипа
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум ajax, XMLHttpRequest, error code 404 (2007)
- Форум JavaScript, innerHTML + javascript (2007)
- Форум JavaScript?! (2016)
- Форум JavaScript (2014)
- Форум javascript (2008)
- Форум javascript ? (2008)
- Форум Javascript (2007)
- Форум JavaScript (2005)
- Форум JavaScript (2006)
- Форум javascript (2005)