Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
String str = {}; // => var str = {};
Вы один разрабатываете и какие планы на поддержку и развитие — сколько времени вы готовы уделять и на что живете при этом?
Вы пишите, «not always valid-javascript is valid-colascript». Как быть с другими библиотеками?
@require "jquery.js" — компилятор определяет по расширению файла как ему следует парсить исходинк. 2. Во Future не понравилось «HTML and CSS stuff». ИМХО, разрыв мозга при чтении кода, строку читать без разделителя еще и с переносами строк. Однако в строке multiline неплохо.
там того пресловутого сахара столько, что в заднице слипается.
P.S. Кстати, а кто рисовал логотип? Неплохой леттеринг.
this. Каскадному оператору на то, что возвращает метод, наплевать.clone:var result, types = [ Number, String, Boolean ];
for (var i in types) if (types.hasOwnProperty(i) && _item instanceof types[i]) return types[i](_item);
if (_item.__proto__ === Array.prototype) {
result = [];
_item.forEach(function(child, index, array) {
result[index] = $_cola_clone(child);
});
return result;
}
hasOwnProperty для обхода массива.Number, String, Boolean клонируются в примитивы, на примитивы instanceof не работает, они идут дальше.new Boolean(false) будет примитив true.__proto__ с прототипом массива — до свидания, IE10-.forEach — до свидания, IE8- (хотя да, с ними мы уже попрощались). Обычные циклы нонче не популярны.forEach — да, благо, сам кой что глобальное, что прототипы встроенных конструкторов расширяет, релизить собираюсь. Только этот метод здесь никто и не добавляет, не к месту он, да и мелочь это по сравнению с остальным.clone добавлял стиснув зубы, так как код самой функции это по сути костыль, но иногда такой оператор действительно пригождается. Array и Object, с учетом прототипа. А в рамках языка большего и не нужно (хотя раньше думал иначе).var a={}, b={}; a.b=b; b.a=a;.function indexOf(arr, val){
var $indexOf = Array.prototype.indexOf;
if($indexOf)return $indexOf.call(arr, val);
for(var i = 0, l = arr.length; l > i; i++)if(arr[i] === val)return i;
return -1;
}
var getProto = Object.getPrototypeOf || function(it){
return it.__proto__ || (it.constructor && it.constructor.prototype) || Object.prototype;
}
var create = Object.create || function(proto){
var C = function(){};
C.prototype = proto;
return new C;
}
function clone(it, stack1, stack2){
if(it == null || typeof it != 'object')return it;
stack1 = stack1 || [];
stack2 = stack2 || [];
var index = indexOf(stack1, it);
if(~index)return stack2[index];
switch(Object.prototype.toString.call(it).slice(8, -1)){
case 'Array':
var result = [];
stack1.push(it);
stack2.push(result);
for(var i = 0, l = it.length; l > i;)result.push(clone(it[i++], stack1, stack2));
return result;
case 'Object':
var result = create(getProto(it));
stack1.push(it);
stack2.push(result);
for(var key in it)if(Object.prototype.hasOwnProperty.call(it, key)){
result[key] = clone(it[key], stack1, stack2);
}
return result;
}
return it;
}
typeof, а у вас она передается в функцию. В итоге:foo? // => false - кофе
isset foo; // => Uncaught ReferenceError: foo is not defined - кола
поиграться с языком вживую вы можете тут
--comments
Preserve copyright comments in the output. By default this
works like Google Closure, keeping JSDoc-style comments
that contain "@license" or "@preserve". You can optionally
pass one of the following arguments to this flag:
— «all» to keep all comments
— a valid JS regexp (needs to start with a slash) to keep
only comments that match.
Note that currently not *all* comments can be kept when
compression is on, because of dead code removal or
cascading statements into sequences.
но в нем нету сахарного синтаксиса
Во-вторых, это структурность ( ООП, модули, пакеты… ), которую не так просто достичь на чистом JavaScript. На данный момент существуют 3 языка, обладающие почти всеми перечисленным качествами
Еще один язык, транслируемый в JavaScript — ColaScript