Подтвердить что ты не робот

Как jQuery $функция и объект?

Я имею в виду объект, как в {} [object Object]. Как это сделать $(selector) и $.fn.init в то же время?

Можете ли вы дать мне простой пример?

4b9b3361

Ответ 1

Это не уникально для jQuery, а для аспект javascript. Все функции - это объекты. Например:.

var f = function() { alert('yo'); }
f.foo = "bar";

alert(f.foo); // alerts "bar"
f();          // alerts "yo"

Ответ 2

Javascript - это объектно-ориентированный язык, поэтому функции ARE объекты, просто причудливые, которые вы можете вызвать.

foo = function() { console.log("foo") }
foo.bar = function() { console.log("bar") }
foo() //=> prints "foo"
foo.bar() //=> prints "bar"

Ответ 3

$ - это функция. метод $может возвращать любую вещь.

Например:

$ = function() {
     return {
                 foo : function() { return 'baa'; },
                 r1: 1,
                 r2 : 'string'
            }
};

typeof $ <- function 
typeof $() <- object
typeof $().foo <- function 
typeof $().foo() <- string
typeof $().r1; <- number 
typeof $().r2 <- string

Ответ 4

jQuery или $ - это функция (вы знаете, что $ является псевдонимом jQuery).

// Define a local copy of jQuery
jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
},

В Javascript все объекты даже function тоже. Следовательно, вы можете напрямую добавлять свойства к функциям.

   jQuery.find = function () {
   }

Ответ 5

Это объект.

$ содержит разные функции.

Вы можете проверить это самостоятельно, создав свой собственный объект:

var $ = {
     select: function(id){return document.getElementById(id);}
}

function $(id){
      return $.select(id);
}

Ответ 6

люди играют вокруг с функциями javascript, и это приводит к интересным шаблонам дизайна. Jquery использует многие из этих шаблонов и создает приятную оболочку вокруг многих функций. так что jquery в конечном счете похож на статический класс, в котором можно делать действительно аккуратные материал..

как и все классы, у него есть имя, а по умолчанию - jQuery. $- ничто не покупает идентификатор, который привязан к библиотеке jQuery и не позволяет вам вводить "jQuery" в качестве идентификатора.

Тот факт, что он является символом $, является произвольным. В какой-то момент было принято решение использовать символ $, но факт заключается в том, что он мог быть почти любым допустимым идентификатором ECMAScript.

Основная причина, по которой мы используем $в качестве идентификатора, заключается в том, что вы с меньшей вероятностью делаете простые ошибки опечатки при вводе одного символа вместо строки.

Надеюсь, что все ясно. Пожалуйста, исправьте меня, ребята, если у меня что-то не так.

Простой пример, например, что моя собственная библиотека скажет класс калькулятора

var Calculator= (function()
{

    function add(a,b)
    {
     return a+b;
    }
    function subtract(a,b)
    {
     return a-b;
    }
    function multiply()
    {
     return a*b;
    }
    function log()
    {
      console.log("log 123")
    }
    return
    {
     add: add,
     subtract: subtract,
     multiply: multiply
    }
}());

Теперь я могу выполнить операцию, используя класс Calculator, следующим образом:

Calculator.multiply(Calculator.add(2,3),5);

добавить, что мои локальные функции являются частными и не могут использоваться снаружи. В этом случае моя функция журнала не может быть доступна с помощью Calculator.log, он скажет, что метод не найден на объекте.

Теперь, возвращаясь к вашему вопросу, вы можете сделать что-то вроде этого:

var _ = Калькулятор;

и теперь используйте функции calc, такие как

_.multiply(_.add(2,3),5);

Интересно, что есть библиотека под названием подчеркивание тоже.

Ответ 7

var q=function(){};

var s = function(){
    alert("base");
    window.s = s;
    return new q()};

q.fn = q.prototype = {};

q.fn.x = s.x = function(){alert("x");return this;};
q.fn.y = s.y = function(){alert("y");return this;};
q.fn.z = s.z = function(){alert("z");return this;};

s().y().z().x();
s.z().x().y();

Ответ 8

var s = function(){};
s.test = function(){console.log('inside s');}
s.test();

- совершенно законный код.