2015-01-19 2 views
0

Что-то, о чем я всегда задавался вопросом, как javascript (или языки вообще) используют синтаксис «альтернативный» для объявления экземпляров встроенных объектов? например.Как javascript создает альтернативный синтаксис для таких объектов, как функция и массив?

// This being the same as.. 
var array = new Array('hi','there'); 

// This. 
var array = ['hi','there']; 

// or 
var myFun = new Function("a","b","return a * b"); 

// being the same as.. 
var myFun = function(a,b){ return a * b } 

Есть ли способ, которым я могу это сделать, если бы я работал над своей собственной библиотекой? Я хотел бы сделать какой-то новый синтаксис для конкретной вещи? Есть ли что-то в прототипе? Или это что-то, что выходит за рамки захвата разработчика и только в понимании W3? JQuery

Резига, кажется, имеет уникальный синтаксис

$('.class').css({'color':'#000'}); 

Есть ли что-то немного глубже он должен был сделать, чтобы получить этот уровень настройки? или это дело делать такие вещи, как ..

// Obviously just a very simple example. 
var $ = function(param){ 
    return document.querySelectorAll(param); 
} 

Я был бы очень интересно узнать, и с нетерпением ждет ваших ответов, спасибо.

+0

Вы не можете создать свой собственный синтаксис и ожидать, что он будет работать на движке JS с запасом, который по своему определению будет синтаксисом JS. JS делает это через определение языка, его синтаксический анализатор и его синтаксис. В jQuery нет ничего уникального, который, в конце концов, только для библиотеки JS. Если вы хотите использовать свой собственный синтаксис, вам нужно перевести его в JS, например CoffeeScript/etc. –

+0

Вы можете использовать свой собственный синтаксис ... но тогда вы должны разобрать его самостоятельно. – Oriol

+0

В качестве дальнейшего чтения для этой темы вам, вероятно, будет интересно узнать о компиляторах, [lexical analysis] (https://en.wikipedia.org/wiki/Lexical_analysis) (популярным инструментом является [flex] (https: //en.wikipedia.org/wiki/Flex_lexical_analyser)) и парсерами (популярным является [GNU bison] (https://en.wikipedia.org/wiki/GNU_bison)). – ajp15243

ответ

5

Нет библиотеки JavaScript, которая изменяет синтаксис языка, поскольку JavaScript не имеет собственных возможностей для этого. Например, синтаксис jQuery - это просто простой синтаксис JavaScript. Вы также можете создать свою собственную функцию с именем $ и написать функции, которые возвращают объекты, чтобы этот стиль «цепочки».

Некоторые языки имеют изменяющиеся возможности макросов, которые эффективно позволяют создавать новый синтаксис. JavaScript не является одним из этих языков (без какого-либо внешнего инструмента).

Такие вещи, как TypeScript, PureScript и CoffeeScript, являются по существу предварительными процессорами, которые анализируют другой синтаксис для генерации простого JavaScript.

+0

Спасибо, так что это всего лишь вопрос манипулирования текущим синтаксисом, а альтернативные синтаксисы - это нечто, что нам недоступно, по крайней мере, для javascript. Даже библиотеки, используемые для манипулирования или создания синтаксиса, - это просто сложные решения по модификации синтаксиса. Спасибо, Уэнси. –

+0

@DirkDunn, пожалуйста! – Pointy

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