Одинаковое свойство у объектов

Рейтинг: 0Ответов: 1Опубликовано: 23.12.2014

В админке могу редактировать новость (титулка, аннотация, осн. текст), это все на 3-х языках. Хочу сделать так, что если какое-то поле не изменялось, то мы его не сохраняли (т.к. будет 9 полей, по 3 на каждый язык).

Создаю прототип для новости:

var proto_content =
{
    title:"",
    annon:"",
    text:"",
    len:new Array(6)
};

потом объекты:

var content_rus = Object.Create(proto_content);
var content_eng = Object.Create(proto_content);
var content_fra = Object.Create(proto_content);

при заполнении:

content_rus.len[0] = 1;
content_eng.len[0] = 2;
content_fra.len[0] = 3;

при выводе:

content_rus.len[0] -> 3
content_eng.len[0] -> 3
content_fra.len[0] -> 3

Почему свойство одно на все объекты? Пробовал new Object(proto_content).... та же история.

Ответы

▲ 1Принят

Массив в данном случае передаётся по ссылке:

[] == []; // false (разные инстансы)
content_rus.len == content_eng.len; // true (инстанс один и тот же)

Лично я бы в данном случае заюзал функцию конструктор:

var Content = function Content () {
    this.title = '';
    this.annon = '';
    this.text = '';
    this.len = new Array(6);
};

var content_rus = new Content();