Google выпустила версию Chromium с поддержкой Dart «Dartium»
Ссылка на статью на habrahabr.ru
Пока только для Маков и Линукса. |
Объясните мне чем дарт лучше яваскрипта?
|
Mахmахmахimus,
Он другой (с) А серьёзно, никто этого не говорил :) |
Цитата:
|
http://synonym.dartlang.org/ вот, если кто не знает. Нифига не круто.
|
Блин, в статье уже есть эта ссылка :D
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
А если еще добавят дескрипторы, декораторы, срезы и перегрузку операторов, то серверная реализация полностью вытеснит Python :) |
Чем дальше в лес, тем толще партизаны. Того и гляди у каждого браузера скоро будет своя реализация чего-то своего, понятного только ему. Мало им было IE css и if IE script.
Однако как показала практика основным всё же будет простейшее. |
Цитата:
Цитата:
|
Цитата:
Цитата:
var array = [1, 2, 3, 4, 5]; array[:1] -> [1] array[1:] -> [2, 3, 4, 5] array[1:3] -> [2, 3] array[::2] -> [1, 3, 5] array[::-1] -> [5, 4, 3, 2, 1] и т.д. Объяснить, что такое декораторы сложно, это нужно понимать |
Цитата:
декоратор на javascript |
Цитата:
|
Цитата:
Object.getPropertyDescriptor(obj, propName) Object.defineProperty(object, propertyname, descriptor) http://msdn.microsoft.com/en-us/libr...(v=vs.94).aspx Цитата:
Я бы сделал отдельно но мне кажется они не будут. |
Цитата:
|
Цитата:
|
Seva1986,
аа, ясно, частенько она заменяет переменную в которой хранилась орегинальная функция да? это как (function(){ var log = console.log.bind(console); console.log = function(a){ alert(a); log(a); } })() теперь консоль будет не только ложить но еще и алертить, так)? это декоратор? |
Mахmахmахimus,
Здесь bind не нужен как бы ;) |
Nekromancer,
как бы нужен так то чтобы работало;) Ну сделай пример без бинда) гляну что ль как это делается у отцов js)) |
(function(){ var log = console.log; console.log = function(a){ alert(a); log.apply(this, arguments); } })(); console.log("It's a Magic!") |
Здесь apply не нужен как бы, он сильнее тормозит чем бинд) бинд фиксируется один раз)
а эплай ищется в прототипах функции и.т.п. |
Mахmахmахimus,
Ну во первых твой bind не сработает при аргументах больше одного :) А во вторых, сделай бенчмарк. |
Цитата:
в среднем бинд выдавал (алерт убрал) 1900-2100 а эплай выдавал 2300 - 2900 на 10 000 итераций но спасибо что сказал, ты же не знал что я знаю про эплай) Ну так что, это декоратор? |
Mахmахmахimus,
Да ты нам сам бенчмарк покажи, а не то сколько выдавал он. Мы сами и проверим. |
Nekromancer,
Вы там всем офисом за компом сидите;) ? (function(){ var log = console.log.bind(console); console.log = function(a){ log(a); } })(); var start = new Date() for ( var i = 0; i < 100000; i++) { console.log('d', 'gg'); } alert((new Date()) - start) (function() { var log = console.log; console.log = function() { log.apply(this, arguments); } })(); var start = new Date() for ( var i = 0; i < 100000; i++) { console.log('d', 'gg'); } alert((new Date()) - start) |
Mахmахmахimus,
Не-не-не, запускать даже не буду. И ты наверно не запускал. Ты в курсе что в хроме можно максимум 1000 раз отпечатать в консоль подряд? А может ты ещё всё таки для правильно бенчмарка заменишь apply на call и будешь передавать один аргумент, ведь bind с несколькими в данном случае не работает? |
monolithed,
что означает стрелочка? -> |
Цитата:
|
Цитата:
|
monolithed,
Спасибо большое я тебя нашел) тперь тебе не скрыться) ответь на вопрос про поля в классах) а то я дальше делать не могу потому что не знаю что должно получиться((( http://javascript.ru/forum/misc/2589...-klassakh.html |
Не понял про bind, разве в bound-функция не передает все аргументы в исходную?
|
Нет, бинд только закрепляет контекст, вторым и последующими аргументами бинда будут закрепленные параметры функции.
если функция принимала 2 аргумента, а мы её забиндили к какому то контексту а так же забиндили какой то первый парамет, то потом передав забинденной функции ОДИН параметр, он будет ей трактоваться как второй. |
Ну и почему
log = console.log.bind(console) не должно работать? Новая bound-функция привязывается к console и может принимать столько же аргументов, сколько и console.log |
Octane,
Да, вы правы :) Естественно передаются все параметры, ведь это всего лишь обёртка привязанная к определённому контексту. Но в данном случае, нужно будет вручную передавать все возможные параметры которые придут в console.log. Не делать же так, в самом деле: var a = console.log.bind(console); console.log = function(){ a.apply(console /* Ну или видимо null можно */, arguments); } Смысл байнда тогда отпадает :) П.С. А можно извратиться так: var a = Function.prototype.apply.bind(console.log, console); console.log = function(){ a(arguments); } |
ааааааааа нипанимаю, все ведь работает без apply:
var log = console.log.bind(console); log(1,2,3,4) ![]() |
Octane,
Да работает, работает. Но вы видели пример Аквариума, что он там напридумывал? Это выглядело примерно так: var log = console.log.bind(console); console.log = function(a){ log(a); }; Так будет работать только один параметр. |
Некроморф хочет сказать что логер который я сделал для примера декоратора не достаточно полный. Так как не может принимать более одного параметра. За что ему и спасибо нашему капитану очевидность. Да, это ни ка не относится к декоратору, но он поставил смайлик что означало что он как бы к слову.
Я подумал что он не знает что лог нужно биндить к контексту консоли чтобы он работал. И обьяснил ему что в другом контексте работать не будет. Тут он показал что есть эплай, тогда за место того чтобы сказать ну и на хрена мне в примере декоратора эплай, я начал ему обьяснять что бинд работает быстрее, тогда он мне сказал что мой логер не полный. |
Цитата:
|
Часовой пояс GMT +3, время: 23:43. |