// codeart.ru / Вопрос/Ответ / Опять наступил на грабли с инициализацией переменных в JavaScript Форум

Опять наступил на грабли с инициализацией переменных в JavaScript rss подписка

Автор: Evgeniy Sergeev

Сколько раз уже наступал на эти грабли, но все никак не могу запомнить, что инициализировать переменные следующим образом в JS нельзя:


function SomeClass(){}
SomeClass.prototype = {
some_array :[] // типа делаю первоначальную инициализацию для каждого объекта
}
a = new SomeClass();
b = new SomeClass();

a.some_array.push('test');
alert(a.some_array); // как и ожиадется возвращает ['test']
alert(b.some_array); // а вот здесь я ожидаю пустой массив, а возвращается ['test']

Прототипное наследование, мать его… Надо просто запомнить. что прототип один на всех. :-)

  1. Какое-то не логичное наследование выходит. А как же сделать так, чтобы его не было?

  2. Недавно попросил коллегу рассказать про прототипы и он заострил внимание на таком примере, говорят частая ошибка.

  3. Сергей, в принципе логично все, просто это так работает. Чтобы для каждого объекта инициализировать переменные нужно их объявлять в теле функции SomeClass().

Leave a Reply

« »