Что-то, о чем я всегда задавался вопросом, как 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);
}
Я был бы очень интересно узнать, и с нетерпением ждет ваших ответов, спасибо.
Вы не можете создать свой собственный синтаксис и ожидать, что он будет работать на движке JS с запасом, который по своему определению будет синтаксисом JS. JS делает это через определение языка, его синтаксический анализатор и его синтаксис. В jQuery нет ничего уникального, который, в конце концов, только для библиотеки JS. Если вы хотите использовать свой собственный синтаксис, вам нужно перевести его в JS, например CoffeeScript/etc. –
Вы можете использовать свой собственный синтаксис ... но тогда вы должны разобрать его самостоятельно. – Oriol
В качестве дальнейшего чтения для этой темы вам, вероятно, будет интересно узнать о компиляторах, [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