что это за синтаксис jquery? - PullRequest
2 голосов
/ 07 мая 2010

Я вижу это довольно часто в некоторых плагинах Jquery

    $('#foo').myPlugin({
    foo: 'bar',
            bar: 'foo'
});

Я говорю о {} в части .myPlugin (). Я часто вижу анонимные функции, такие как

.click(function(){
});

но приведенный выше синтаксис выглядит иначе

спасибо за вашу помощь!

Ответы [ 3 ]

4 голосов
/ 07 мая 2010

Это объект.Эта нотация используется для имитации именованных аргументов - то, что JS не может сделать изначально AFAIK.

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

function myfunc(args)  { }  
vs.
function myfunc(duration, opacity, width, height, speed)  { }

и - что наиболее важно - он позволяет произвольно упорядочивать аргументы:

{"duration": "0.5",
 "width": 300,
 "speed": 2 }

Видеть, как много разработчиков JS не работают в контексте IDE (который отображал быожидаемые параметры функции, использующие «упреждающий просмотр»), это очень удобно, поскольку вам не нужно запоминать порядок появления параметров, когда.

Недостатком этого является то, что если есть является средой IDE, очень трудно обеспечить какие-либо функции "упреждения" для этих ложных именованных аргументов, и произвольный порядок аргументов может привести к некоторой степени хаоса в долгосрочной перспективе.

2 голосов
/ 07 мая 2010

Это литерал JavaScript Object. Это часть языка JavaScript (не относится только к jQuery). Объекты JavaScript по сути являются картами имен и значений; имя и значение разделяются двоеточием, а пары разделяются запятыми. Все это завернуто в пару фигурных скобок.

Итак, если вы сделали что-то вроде этого:

var obj = { foo: 'bar', name: 'value' };

Позже вы могли бы сделать что-то вроде этого:

alert(obj.foo); //alerts "bar"

или даже:

alert(obj['foo']); //also alerts "bar"

В этом случае объект передается в качестве параметра функции myPlugin ().

0 голосов
/ 07 мая 2010

Это просто вызов функции, где arg фактически является картой параметров.

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