Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вопрос знатока JS (https://javascript.ru/forum/jquery/17599-vopros-znatoka-js.html)

adamasantares 25.05.2011 18:23

Вопрос знатока JS
 
Помогите разобраться с одним вопросом.

Каждый день многие из нас пишут селекты типа $('div.class').чтото().счемто(); или $.plugin( { параметры });

Так вот в чем вопрос. Как jquery ($) является одновременно функцией $(селектор) и объектом $.method() ? :-?

Пытался сам понять, но не хватило навыков и знаний...
Если кто знает подскажите на примере. Как такое реализовать?

adamasantares 25.05.2011 18:26

Вот блин, тема должна была называться "вопрос к знатокам js!", как так умудрился опечататься хз ))

walik 25.05.2011 18:27

http://javascript.ru/forum/jquery/15...i-obektom.html

adamasantares 25.05.2011 18:33

спасибо )

adamasantares 25.05.2011 18:37

Блин, вот двоишник, два раза читал статью так и не запомнил что:

Функции - объекты

В javascript функции являются полноценными объектами встроенного класса Function. Именно поэтому их можно присваивать переменным, передавать и, конечно, у них есть свойства:

function f() {
...
}
f.test = 6
...
alert(f.test) // 6

Свойства функции доступны и внутри функции, так что их можно использовать как статические переменные.

Например,
function func() {
var funcObj = arguments.callee
funcObj.test++
alert(funcObj.test)
}
func.test = 1
func()
func()
В начале работы каждая функция создает внутри себя переменную arguments и присваивает arguments.callee ссылку на себя. Так что arguments.callee.test - свойство func.test, т.е статическая переменная test.


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