Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как реализовать обращение к объекту, конкретнее см внутри (https://javascript.ru/forum/jquery/30776-kak-realizovat-obrashhenie-k-obektu-konkretnee-sm-vnutri.html)

kichSman 15.08.2012 16:07

Как реализовать обращение к объекту, конкретнее см внутри
 
Полистал либу, так и не понял, как в jQuery реализовано обращение к одному объекту двумя способами, а именно:

1. с указание аргументов
jQuery(DOMElemnt);

2. обращение к свойству объекта, например
jQuery.extend();

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

Aetae 15.08.2012 16:19

Вариантов дофигище, самый простой:
JQuery = function(s){alert(s)};
JQuery.extend = function(){alert('f*ck you!')};

JQuery('парам пам пам');
JQuery.extend('парам пам пам') ;

kichSman 15.08.2012 16:40

Цитата:

Сообщение от Aetae (Сообщение 197785)
Вариантов дофигище, самый простой:
JQuery = function(s){alert(s)};
JQuery.extend = function(){alert('f*ck you!')};

JQuery('парам пам пам');
JQuery.extend('парам пам пам') ;

Спасибо. К сожалению, я думал в фреймворке реализация иная.

Мысли в слух... Может кому тоже пригодиться.

В общем понял в чем моя проблема. Пригляделся в дебагер глубже и вот что нашел.
Фреймворк не имеет конструктора, т.е. не используется
new jQuery()

видать чтоб не плодили сам jQuery, вызов jQuery создает конструктор одного из своих свойст
new jQuery.fn.init( selector, context, rootjQuery );

На этот счет коммент от разработчиков: "'улучшенный' конструктор".

Aetae 15.08.2012 17:08

Или так. Или через prototype. Я показал прочтейший вариант.

kichSman 15.08.2012 18:06

Цитата:

Сообщение от Aetae (Сообщение 197797)
Или так. Или через prototype. Я показал прочтейший вариант.

Ошибаетесь.
jQuery и его синоним $ - это только функции, у самих которых при стандартном вызове не имеется прототипа, так как отсутствует конструктор.

В общем понял как реализовывается
  • jQuery - это только функция
  • jQuery.fn.init - объект возвращаемый функцией
поэтому
  • jQuery() - вызов функции
  • jQuery.foo() - вызов метода непосредственно функции
короче надо еще потестить и найти решение под свою задачу


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