Задать вопрос
kurojneko
@kurojneko

Странное делегирование в js? Почему объекты не копируются?

Здравствуйте. Есть такая конструкция, объект, на него навешана куча обработак всяких дропов, кликов и пр.
Пытаюсь создать второй объект, почти такой же как и первый, но один из обработчиков надо заменить.
При подобной конструкции (код ниже) обработчик просто вешается следом, и на изначальный объект, и на новый.
Громко не ругайтесь, ООП систему js еще не понимаю, но пытаюсь.

В консоли явно видно последовательный вызов 2х функций.

var item = $('#container1');    // Делаю объект из дом элемента
item.target = $(item).children('.target');    // Дропы принимает не сам объект, а один из дочерних узлов (так надо)
// тут куча обработок
// и наконец сам обработчик дропа
item.target.on('drop', function(e) {
    console.log('Drop');
});

var item_2 = {};
item_2.__proto__ = item;    // пытаюсь скопировать объект
// пытаюсь переназначить обработчик
item_2.target.on('drop', function(e) {
    console.log('Drop 2');
});
  • Вопрос задан
  • 228 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@kazmiruk
У Вас item.target и item_2.target - один и тот же объект, на который Вы и вешаете событие. При вызове item_2.target происходит поиск target сначала в item_2, затем не находит его и лезет в item как в прототип.
Ответ написан
Комментировать
Rema1ns
@Rema1ns
и так сойдет
обычно копируют объекты через clone()
Ответ написан
Комментировать
kurojneko
@kurojneko Автор вопроса
item_if = $(item).clone(true);
item_if.target - undefined
Что я делаю не так?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы