2015-11-05 9 views
2

Я новичок в JavaScript и я хочу, чтобы понять что-то, например, в JQuery есть объект JQuery (часто называемый $), но я запутался здесь:Путаница между объектами и функциями - JavaScript

В JQuery, когда мы хотим, чтобы выбрать DOM узлы, мы используем селектор JQuery, например так:

$('div'); 

Но когда мы хотим, чтобы сделать запись к серверу мы называем это нравится:

$.post({...}); 

Мои вопрос, как объект может вести себя как функция и объект одновременно? Когда я использую $('div'), я вызываю функцию, и когда я использую $.post({...}), я получаю доступ к функции внутри объекта.

+1

Я предлагаю вам ознакомиться с обзором http://jquery.com/, это поможет вам получить больше и больше знаний – Mehmood

+0

все просто: '$' - не объект, это функция. – Grundy

+0

@Grundy no '$' является объектом * и * функцией –

ответ

0

Подводя итоги: функции являются объектов.

function foo() { 
    alert("bar"); 
} 

foo.bar = "foobar"; 

alert(foo.bar); 
foo(); 
alert(foo); 

Они просто специальные объекты, которые вы можете добавить () для звонить/бежать.

+0

он отлично работает, спасибо :) –

3

$("h1").remove(); 

Большинство методов JQuery называются на объекты JQuery, как показано выше; эти методы считаются частью пространства имен $.fn или «прототипом jQuery», и лучше всего рассматривать как методы объекта jQuery.

Однако существует несколько методов, которые не действуют на выбор; эти методы считаются частью пространства имен jQuery , и лучше всего рассматриваются как основные методы jQuery.

Это различие может быть невероятно запутанным для новых пользователей jQuery. Вот что вам нужно помнить:

1) методы называются по JQuery выбора находятся в $.fn пространстве имен, и автоматически получать и возвращать выбор, как это.

2) методы в $ пространстве имен, как правило, методы полезности типа, и не работают с выборами; они не передают автоматически любые аргументы, и их возвращаемое значение будет отличаться.

+0

Я тоже в порядке, спасибо за описание некоторых внутренних функций JQuery для меня :), можете ли вы показать мне, как я могу получить это поведение в javascript, так как я могу получить функцию/объект в той же ссылке :) –

+0

@AbdessamedMansouri, просто создать функцию и добавить свойство – Grundy

+0

@AbdessamedMansouri см. мой ответ, как это сделать –