Помогите понять синтаксис объявления необычной функции Javascript - PullRequest
1 голос
/ 08 июня 2011

Я пытаюсь понять Javascript / jQuery, стоящий за ColorBox.Некоторые формы синтаксиса немного сложно найти в Google, так как они немного длинны для описания.У меня возникают проблемы с пониманием следующей строки:

publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {

Итак, я предполагаю, что создается новая функция с именем publicMethod, но как мы можем, но я действительно не понимаю ничего, кроме первого символа равенства ("=").

Нормальное объявление функции будет выглядеть так:

function publicMethod(options, callback) {

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

Ответы [ 3 ]

1 голос
/ 08 июня 2011

In:

$.fn[colorbox]
  • $ - бесполезное неописательное имя переменной.Он содержит объект.
  • $.fn доступ к свойству fn этого объекта.
  • fn[colorbox] доступ к свойству этого объекта, имя которого соответствует строке, хранящейся в colorbox

Но сначала определяется правая часть и =, поэтому, прежде чем присвоить это значение publicMethod, присваивается значение $[colorbox] $.fn[colorbox].

… и прежде, чем он это сделает, он назначает (там) функцию.

function () {} определяет анонимную функцию и передает ее влево (поэтому она сохраняется в любом месте на другой стороне =)

1 голос
/ 08 июня 2011

В JavaScript функции находятся на одном уровне с другими объектами - вы можете назначать их переменным и передавать их в качестве параметров.

Обычно вы объявляете функцию следующим образом:

function SomeFunc(arg1, arg2) { /* etc etc */ }

Эквивалентный путь будет:

var SomeFunc = function(arg1, arg2) { /* etc, etc */ }

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

Многие библиотеки будут принимать функции в качестве аргументов своих собственных функций, запуская переданную функцию в любое удобное для них время (или передавая их в другом месте, как любая другая переменная). Часто это для обратных вызовов. При передаче функций в качестве аргументов, на самом деле нет необходимости давать им собственное имя, таким образом, следующее выполняет свою работу:

SomeLibrary.doSomethingThenCallback(function(arg1, arg2) {
    // the doSomethingThenCallback function will decide when, if ever,
    // to run this, or pass it on somewhere else, or whatever else would
    // be done with any other argument value.
});
0 голосов
/ 08 июня 2011

Это function publicMethod(options, callback) {} почти, но не совсем то же самое, что var publicMethod = function(){options, callback}.В первом случае вы создаете функцию с именем publicMethod, а во втором вы создаете анонимную функцию и назначаете ее переменной publicMethod.Для других назначений просто сохраните эту функцию для дальнейшего использования в качестве метода API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...