2011-01-28 4 views
4

Это первые несколько строк в файле MicrosoftAjax.debug.js.Что это за синтаксис?

Что они делают с синтаксисом? В частности линия 3.

Function.__typeName = 'Function'; 
Function.__class = true; 
Function.createCallback = function Function$createCallback(method, context) { 
+0

Они устанавливают некоторые свойства в конструкторе 'Function'. Что насчет этого? –

+0

btw функция literal в строке 3 является именованным функциональным выражением –

ответ

3

Это обычный код, который случается иметь $ символ в имени функции.

Выражение function Function$createCallback(method, context) { ... } является названным функциональным выражением; он оценивает функцию с именем Function$createCallback.
В отличие от многих языков, символ $ совершенно легален в Javascript-идентификаторе (см. JQuery), так что это обычная функция с несколько необычным именем.

Код назначает эту функцию для создания свойства createCallback объекта Function.
(свойство является функцией, функции Javascript ничем не отличаются от переменных)

+0

В чем преимущество назначения именованной против анонимной функции этому свойству? – Jacob

+2

@Jacob http://kangax.github.com/nfe/ –

+0

@ Šime Vidas: Я как раз собирался опубликовать эту же статью. : О) – user113716

Смежные вопросы