Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.06.2009, 13:34
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Octane
Не понял о чем это.
О двух последних функциях. которые я приводил. Возможно это не лучший пример но суть там такая: для добавления функционала можно использовать либо методы(как в вашем примере), срабатываемые в обработчике, либо обычные функции, срабатывающие в том же обработчике. Сначала меня клонило в сторону использования ООП, но потом понял, что можно обойтись и без создания каких-либо объектов и прототипов, т.е. они просто лишне. Правильна ли такая позиция?!
Ответить с цитированием
  #12 (permalink)  
Старый 03.06.2009, 13:36
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Octane
другого варианта кросс-браузерно добавить полученному DOM-объекту набор методов, не копируя ссылки на них, нет.
Если чесно, я не вижу, чтобы методы принадлежали именно DOM-узлу. Получается он просто завёрнут в объект.
Ответить с цитированием
  #13 (permalink)  
Старый 03.06.2009, 13:46
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от B~Vladi Посмотреть сообщение
Сначала меня клонило в сторону использования ООП, но потом понял, что можно обойтись и без создания каких-либо объектов и прототипов, т.е. они просто лишне. Правильна ли такая позиция?!
Ну можно и просто набор функций создать, в которые, при вызове, будет передаваться ссылка на DOM-узел вместе с отальными параметрами:
var DOM = {
  show: function(node) {
     node.style.diplay = 'block';
  },
  hasClass: function(node, className) {
      return (' ' + node.className + ' ').indexOf(' ' + className + ' ') != -1;
  }
};

var element = document.getElementById('…');

if (DOM.hasClass(element, 'my-class')) {
   …
}

раз не нравятся конструкторы с прототипами.

Сообщение от B~Vladi Посмотреть сообщение
Если чесно, я не вижу, чтобы методы принадлежали именно DOM-узлу. Получается он просто завёрнут в объект.
Да, именно так. Он завернут в объект, в прототипе которого есть методы для работы с DOM-узлом.
Ответить с цитированием
  #14 (permalink)  
Старый 03.06.2009, 13:53
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Octane
раз не нравятся конструкторы с прототипами.
Мне всё нравится. И объекты и их прототипы/конструкторы. Я хочу понять какой вариант использовать и почему.
Ответить с цитированием
  #15 (permalink)  
Старый 03.06.2009, 15:37
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Посмотрел, про замыкания и понял, что это я знаю и уже рассматривал, как вариант. Но мне такой подход не нравится из-за "некрасивости" кода. Я считаю. что так писать нельзя ну или в самых крайних случаях.
ты про такое читал?
(function() {
var a = 1;
})();
alert( a );
Ответить с цитированием
  #16 (permalink)  
Старый 03.06.2009, 15:52
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

да, читал, и что?!
Ответить с цитированием
  #17 (permalink)  
Старый 03.06.2009, 15:57
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Octane
Так как в IE6,7 нельзя добавить свой метод в прототип HTMLElement, то используют обёртки.
DOM-объекту можно назначить метод. Мне и не надо было добавлять метод всем узлам, а только определённым.

Например вот такой код:

var div=document.getElementById('div');
div.method=function(){
   alert('It`s DIV');
}
div.method();


работает в ie, ff, opera.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется совет в реализации. cker Элементы интерфейса 49 15.05.2009 22:45