Как "jQuery" var является функцией и объектом?
Например, когда вы используете jQuery('someDiv');
, это функция, но вы также можете использовать jQuery.ajax(...);
.
Как это возможно?
Ответы
Ответ 1
В JavaScript сами функции являются объектами.
var x = function () {};
x.foo = "bar";
console.log(x.foo); // bar
EDIT:
Чтобы добавить к этому:
var x = function () {
return 'foo';
};
x.bar = function () {
return 'baz';
};
Итак, теперь:
console.log(x()); // foo
console.log(x.bar()); // baz
Ответ 2
Я считаю, что пример .ajax использует архитектуру подключаемого модуля jQuery. Я думаю, что возможности jQuery AJAX - это лишь один из многих плагинов, которые вы могли бы использовать.
Используемый '$' также является просто псевдонимом для вызова jQuery.
Последнее наблюдение jQuery определяется как (из jquery-1.4.2.js):
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
},
и Ajax выглядит следующим образом:
jQuery.extend({
...some other goodness...
ajax: function( origSettings )
...more goodness...
});