Допустим у нас есть код:
function User(fullName)
{
var fullArr = fullName.split(' '); //делаем массив
Object.defineProperty(this, 'firstName',
{
get: function()
{
return fullArr[0]; //выдаём первый элемент массива
},
set: function(value)
{
fullArr[0] = value; // записываем первый элемент массива
}
} );
Object.defineProperty(this, 'lastName',
{
get: function()
{
return fullArr[1]; //выдаём второй элемент массива
},
set: function(value)
{
fullArr[1] = value; //записываем второй элемент массива
}
} );
Object.defineProperty(this, 'fullName',
{
get: function()
{
return fullArr[0] + ' ' + fullArr[1]; //выдаём весь массив, через пробел
},
set: function(value)
{
fullArr = value.split(' '); //записываем массив из строки
}
} );
}
var vasya = new User("Василий Тёркин");
var masha = new User("Мария Шарапова");
Итак у нас два разных пользователя. Они, насколько я понимаю, ничем друг другу не мешают. Но мне до конца не понятен механизм их образования: оператор new генерирует создание нового объекта, функция выполняется и выдаёт этот новый объект. Но! Массив fullArr где хранится? если он лежит в функции(конструкторе) User и находится через замыкание, то тогда эти два экземпляра должны мешать друг другу, перезаписывая значения друг друга. Если они не мешают друг другу, значит этот массив каким-то образом принадлежит объекту, но где "там" он лежит?...

Спасибо.