Язык JavaScript и $ в JQuery - PullRequest
       12

Язык JavaScript и $ в JQuery

7 голосов
/ 22 сентября 2009

Мне было интересно, как работает $. в $ .ajax ({...}); Работа? это не имеет смысла для меня. Конечно, .ajax как член имеет смысл, но $ не является именем переменной? либо это? Как это определяется?

Ответы [ 6 ]

16 голосов
/ 22 сентября 2009

$ - это то же самое, что и jQuery. То есть вы можете написать jQuery.ajax (...) и т. Д.

Запутанная часть: $ является допустимым символом в именах переменных Javascript. У него нет особого значения, как, например, в PHP или Perl.

10 голосов
/ 22 сентября 2009

Из источника:

// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,

jQuery = window.jQuery = window.$ = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context );
},

Это функция (первоклассный объект) со свойствами, например, упомянутая вами функция ajax.

«$» является допустимым символом для имен переменных, и, как видно из фрагмента кода, $ совпадает с jQuery.

2 голосов
/ 22 сентября 2009

Как объясняется в ряде ресурсов JavaScript, включая Руководство по JavaScript для Mozilla :

Идентификатор JavaScript должен начинаться с буквы, подчеркивания (_) или знака доллара ($); последующие символы также могут быть цифрами (0-9). Поскольку JavaScript чувствителен к регистру, буквы включают символы от «A» до «Z» (заглавные буквы) и символы от «a» до «z» (строчные).

Таким образом, все следующее допустимо (хотя и неуместно) в JavaScript:

var $ = function() {};

var ____ = 0;

var __$__$ = 1;

function _$_$_$_(_, __, $_$) {
    return (_ * __) + $_$;
}

alert(_$_$_$_(3,2,1)); // shows 7 
2 голосов
/ 22 сентября 2009

$ Это определено в библиотеке jQuery как ссылка на jQuery. Вы можете скачать библиотеку и увидеть первые строки:

var
    // Will speed up references to window, and allows munging its name.
    window = this,
    // Will speed up references to undefined, and allows munging its name.
    undefined,
    // Map over jQuery in case of overwrite
    _jQuery = window.jQuery,
    // Map over the $ in case of overwrite
    _$ = window.$,

Это "window. $", "$" Относится к среде объекта окна.

1 голос
/ 22 сентября 2009

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

function test () {
    alert("hey!");
}
test.foo = function (msg) {
    alert("you said: "+msg);
};

test(); //alerts "hey!"
test.foo("123") //alerts ""you said: 123".

//note that I'm not calling test().foo(),
//as test() returns nothing, though it could
//return an object (with a foo() or any other method itself!)

это то, что происходит с jQuery.

1 голос
/ 22 сентября 2009

$ является одним из единственных допустимых символов, которые могут использоваться в именах переменных Javascript. JQuery и другие библиотеки используют преимущество инициализации $ как функции, которая инициализирует объект jQuery.

Если я правильно помню, код выглядит примерно так:

$ = window.jQuery = function(){
    return new jQuery(args);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...