Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.10.2014, 18:53
Аспирант
Отправить личное сообщение для 2chan Посмотреть профиль Найти все сообщения от 2chan
 
Регистрация: 11.07.2014
Сообщений: 69

Объект возвращает document или...
Всем привет. Прошу в вас помощи в таком деле. Решил для своего сайта запилить объект для быстрой работы с документом, в который добавлю новые функции (insertAfter, удобные мне названия функций поиска, удаление/добавление элемента...). Знаю, что странно, но мне так удобнее пилить скрипты. Вот нужная часть:

var DOM = {
  global: document,
  HTML: document.documentElement,
  BODY: document.body,
  HEAD: document.head,
  // тут ещё несколько функций и методов
}

Но понял, что DOM.global для document звучит как-то странно. Поэтому возник вопрос: как переделать объект так, чтобы просто DOM был равен document, а его свойства - тому, что я скажу. Т.е. сейчас так:
alert(DOM.global == docuement); // true
alert(DOM.HEAD == document.head); // true

, а мне нужно:
alert(DOM == docuement); // true, т.к. DOM это document
alert(DOM.HEAD == document.head); // true, т.к. в объекте DOM свойство HEAD даёт ссылку на document.head

. Помогите пожалуйста :з
Алсо, это можно сделать через, например, valueof, toString или подобным свойствами объекта?

Последний раз редактировалось 2chan, 07.10.2014 в 18:56.
Ответить с цитированием
  #2 (permalink)  
Старый 07.10.2014, 19:04
Аспирант
Отправить личное сообщение для d.skuratovich Посмотреть профиль Найти все сообщения от d.skuratovich
 
Регистрация: 19.09.2014
Сообщений: 73

Очень странный подход) На самом деле ты просто пишешь какую-то фигню)
Присвой документ переменной и все.
var DOM = document;
DOM.head; DOM.body;


Почему не нравится такой способ? И зачем вообще эти танцы с бубном)

Последний раз редактировалось d.skuratovich, 07.10.2014 в 19:07.
Ответить с цитированием
  #3 (permalink)  
Старый 07.10.2014, 19:07
Аспирант
Отправить личное сообщение для 2chan Посмотреть профиль Найти все сообщения от 2chan
 
Регистрация: 11.07.2014
Сообщений: 69

Сообщение от d.skuratovich Посмотреть сообщение
Почему не нравится такой способ?
Потому что в объекте ещё будет много методов и свойств, которых нет в document.
Ответить с цитированием
  #4 (permalink)  
Старый 07.10.2014, 19:07
Аспирант
Отправить личное сообщение для d.skuratovich Посмотреть профиль Найти все сообщения от d.skuratovich
 
Регистрация: 19.09.2014
Сообщений: 73

Сообщение от 2chan Посмотреть сообщение
Потому что в объекте ещё будет много методов и свойств, которых нет в document.
То есть такой своеобразный DOM-помощник?)
Ответить с цитированием
  #5 (permalink)  
Старый 07.10.2014, 19:10
Аспирант
Отправить личное сообщение для 2chan Посмотреть профиль Найти все сообщения от 2chan
 
Регистрация: 11.07.2014
Сообщений: 69

Сообщение от d.skuratovich Посмотреть сообщение
DOM-помощник?
Да, именно.
Ответить с цитированием
  #6 (permalink)  
Старый 07.10.2014, 19:12
Аспирант
Отправить личное сообщение для d.skuratovich Посмотреть профиль Найти все сообщения от d.skuratovich
 
Регистрация: 19.09.2014
Сообщений: 73

2chan, нельзя сделать так чтобы объект одновременно был и документом, и объектом с функциями или свойствами.
Хочется помощника-делай, но сделать так чтобы он одновременно возвращал два варианта-не комильфо. Или же можешь расширить прототип.
Ответить с цитированием
  #7 (permalink)  
Старый 07.10.2014, 19:27
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,490

Если пишешь один, можешь не париться и напихать всё в сам документ:
document.foo = function(){return 'bar'};
DOM = document;
alert(DOM.head);
alert(DOM.foo());

А если пишешь не один - всё равно не будешь юзать подобные извращения.

А в том что ты просишь - ошибка в логике. Объект, очевидно, не может быть одновременно равен и не равен другому объекту. Что-то наподобие можно изобразить с помощью новомодных Proxy, но даже так document == DOM будет false.
__________________
29375, 35

Последний раз редактировалось Aetae, 07.10.2014 в 19:34.
Ответить с цитированием
  #8 (permalink)  
Старый 07.10.2014, 19:33
Аспирант
Отправить личное сообщение для 2chan Посмотреть профиль Найти все сообщения от 2chan
 
Регистрация: 11.07.2014
Сообщений: 69

И действительно! Такое очевидное решение, а я ищу сложные обходные пути. Спасибо большое :з
Ответить с цитированием
  #9 (permalink)  
Старый 07.10.2014, 20:03
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Aetae, а почему не в прототип? Или проблемы со старыми IE?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 07.10.2014, 20:23
Аспирант
Отправить личное сообщение для d.skuratovich Посмотреть профиль Найти все сообщения от d.skuratovich
 
Регистрация: 19.09.2014
Сообщений: 73

Сообщение от danik.js Посмотреть сообщение
Aetae, а почему не в прототип? Или проблемы со старыми IE?
Я, например, вообще не вижу не одной причины такое делать) Ну я в целом по объект
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
button onClick объект не поддерживает это свойство или метод dimarus83 Events/DOM/Window 8 01.03.2014 15:41
Не получается получить document открытого окна Dim@ Общие вопросы Javascript 1 20.05.2012 15:52
как узнать,что на объект нажали кнопкой мышки или id объекта,на который нажали? Anastasiya Элементы интерфейса 14 01.02.2012 21:49
Получить объект содержащий caller no_alex Общие вопросы Javascript 14 20.03.2009 21:37
Как узнать свернуто окно браузера или нет. bar-boss Events/DOM/Window 3 25.09.2008 16:09