X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Расширение функционала объектов в JS
Dragon0ne
Dragon0ne
Topic Starter сообщение 16.9.2010, 0:43; Ответить: Dragon0ne
Сообщение #1


Допустим есть следующий код:
var child_id = document.getElementById("some-id").firstChild.id;
Хотелось бы обрамить методами доступ к свойствам элементов, чтобы в итоге получить примерно вот такой код:
var child_id = document.getElementById("some-id").getFirstChild().getId();
Пробовал в прототипе объекта задать новые методы:
Object.prototype.getId = function() {
   return( typeof(this.id)==='undefined' ? null : this.id );
}

Object.prototype.getFirstChild = function() {
   if(typeof(this.childNodes)!=='undefined')
      for(var i=0;i<this.childNodes.length;i++)
         if(typeof(this.childNodes[i].tagName)!=='undefined')
            return this.childNodes[i];
   return null;
}

Работает, но конфликтует с другими модулями в коде.

Подскажите, как безопасно добавить новый функционал к существующим объектам?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 16.9.2010, 2:06; Ответить: MetSerp
Сообщение #2


а в чем выражается конфликт? Вроде вы верной дорогой идете.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Dragon0ne
Dragon0ne
Topic Starter сообщение 16.9.2010, 2:43; Ответить: Dragon0ne
Сообщение #3


Конфликтует с jquery. При любой незначительной модификации протопипа объекта, вываливается вот такая ошибка:
Expr.leftMatch[type].exec is not a function
   if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {...
Подробности пока что сказать сложно, разбираюсь.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 16.9.2010, 3:40; Ответить: MetSerp
Сообщение #4


а вы пытаетесь объекты jquery модифицировать? И конфликт случается при модификации прототипа любого объекта или только определенных?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Dragon0ne
Dragon0ne
Topic Starter сообщение 16.9.2010, 4:14; Ответить: Dragon0ne
Сообщение #5


(MetSerp @ 16.9.2010, 06:40) *
а вы пытаетесь объекты jquery модифицировать? И конфликт случается при модификации прототипа любого объекта или только определенных?


Конфликт случается при модификации прототипа именно у Object. Другими словами все потомки Object получают доступ к новым методам... но в этом случае jQuery-ui при создании диалога:
jQuery("#dialog-id").dialog();
крашится. Пока что решения не нашел, но причина отчасти объясняется тут.

Вообще, в итоге этой затеи хотелось бы всем объектам в DOM, имеющим свойство tagName, прописать новые методы... Наподобие того, что сделано в FBJS.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВерстка/Натяжка/Оптимизация/Увеличение функционала шаблонов на WP
Разработка на профессиональном уровне
144 Gerga 91685 11.3.2024, 19:59
автор: anchous
Открытая тема (нет новых ответов) Создание сайтов, доработки функционала
1 papic 1060 25.5.2022, 21:21
автор: Wachowski
Открытая тема (нет новых ответов) Нужен специалист поставить расширение на phpBB 3.2.8.
Запрет индексации тем или сразу для закрытого ращздела
0 Уфолог Бова 4398 26.7.2021, 21:59
автор: Уфолог Бова
Открытая тема (нет новых ответов) Вредоносное расширение Переводчика для Оперы и Хрома
0 Den1xxx 8098 29.11.2015, 19:50
автор: -Den1xxx-
Открытая тема (нет новых ответов) Нужен программист (команда) для доработки функционала сайта
3 koroluk1990 2793 23.4.2015, 7:44
автор: koroluk1990


 



RSS Текстовая версия Сейчас: 29.3.2024, 16:38
Дизайн