В чем смысл функции JS, имеющей функции? [Дубликат]

Это ключевое слово java ... final всегда одинаково в orroid или нет в android. Это зависит от того, к чему вы обращаетесь.

Например

Применить к переменной означает, что ее нельзя изменить после инициализации.

Применить к методу означает, что он не может перегрузить метод.

Применить к классу, и вы не можете переопределить этот класс.

20
задан Kevin Panko 23 December 2011 в 21:12
поделиться

8 ответов

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

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

alert(f.foo); // alerts "bar"
f();          // alerts "yo"
30
ответ дан numbers1311407 20 August 2018 в 08:03
поделиться

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

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

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

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

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

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

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 _ = Calculator;

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

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

. Интересно, что библиотека также называется underscore ..

1
ответ дан Benjamin 20 August 2018 в 08:03
поделиться

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 () {
   }
2
ответ дан Fizer Khan 20 August 2018 в 08:03
поделиться

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

Например:

$ = 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
ответ дан Kakashi 20 August 2018 в 08:03
поделиться
  • 1
    Это должен быть ответ, я думаю, ему нужно немного объяснений, но через некоторое время я играю с ним, я понял, спасибо, ты мне очень помог! – Heriberto Juarez 29 January 2018 в 04:02
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();
1
ответ дан Lumic 20 August 2018 в 08:03
поделиться

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

foo = function() { console.log("foo") }
foo.bar = function() { console.log("bar") }
foo() //=> prints "foo"
foo.bar() //=> prints "bar"
4
ответ дан Matt Briggs 20 August 2018 в 08:03
поделиться
  • 1
    Вероятно, это должен быть «объектно-ориентированный функциональный язык», поскольку, поскольку объектно-ориентированная сама по себе не означает, что функции являются первоклассными. – Mike Caron 28 August 2011 в 21:30
var s = function(){};
s.test = function(){console.log('inside s');}
s.test();

является совершенно законным кодом.

1
ответ дан Maxim Krizhanovsky 20 August 2018 в 08:03
поделиться
  • 1
    Почему бы вам просто не использовать отдельный объект, если вы хотите сделать что-то вроде этого? – 0x499602D2 28 August 2011 в 21:14
  • 2
    @David Почему два объекта, если у вас есть только один объект, а затем выполняйте оба $( ... ) и $.foo( ... )? – Šime Vidas 28 August 2011 в 21:20

Это объект.

$ выполняет различные функции.

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

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

function $(id){
      return $.select(id);
}
1
ответ дан Neal 20 August 2018 в 08:03
поделиться
  • 1
    Это не работает для меня. Он возвращает «объект» не является функцией & quot; когда я попробую - jsfiddle.net/Ew2Dx – 0x499602D2 30 August 2011 в 16:34
Другие вопросы по тегам:

Похожие вопросы: