Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Объект возвращает document или... (https://javascript.ru/forum/events/50693-obekt-vozvrashhaet-document-ili.html)

2chan 07.10.2014 18:53

Объект возвращает 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 или подобным свойствами объекта?

d.skuratovich 07.10.2014 19:04

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


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

2chan 07.10.2014 19:07

Цитата:

Сообщение от d.skuratovich (Сообщение 333942)
Почему не нравится такой способ?

Потому что в объекте ещё будет много методов и свойств, которых нет в document.

d.skuratovich 07.10.2014 19:07

Цитата:

Сообщение от 2chan (Сообщение 333944)
Потому что в объекте ещё будет много методов и свойств, которых нет в document.

То есть такой своеобразный DOM-помощник?)

2chan 07.10.2014 19:10

Цитата:

Сообщение от d.skuratovich (Сообщение 333945)
DOM-помощник?

Да, именно.

d.skuratovich 07.10.2014 19:12

2chan, нельзя сделать так чтобы объект одновременно был и документом, и объектом с функциями или свойствами.
Хочется помощника-делай, но сделать так чтобы он одновременно возвращал два варианта-не комильфо. Или же можешь расширить прототип.

Aetae 07.10.2014 19:27

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

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

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

2chan 07.10.2014 19:33

И действительно! Такое очевидное решение, а я ищу сложные обходные пути. Спасибо большое :з

danik.js 07.10.2014 20:03

Aetae, а почему не в прототип? Или проблемы со старыми IE?

d.skuratovich 07.10.2014 20:23

Цитата:

Сообщение от danik.js (Сообщение 333962)
Aetae, а почему не в прототип? Или проблемы со старыми IE?

Я, например, вообще не вижу не одной причины такое делать) Ну я в целом по объект


Часовой пояс GMT +3, время: 17:21.