Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   CoffeeScript vs ES6 (https://javascript.ru/forum/offtopic/58349-coffeescript-vs-es6.html)

Safort 19.09.2015 22:39

ТОТ_САМЫЙ,
Цитата:

новый css
Новый - это какой?

Цитата:

Какие недостатки кофескрипта по сравнению с es6 ты знаешь?
У ES6+ есть нормальный, читаемый синтаксис, большее сообщество, умные чуваки, грамотно разрабатывающие стандарт и, что самое главное, CS зависим от JS и не сможет нормально развиваться без JS.

ТОТ_САМЫЙ 20.09.2015 07:45

Цитата:

Сообщение от Safort
Новый - это какой?

Ну там переменные и прочее такое.

У CS, в разы лучше синтаксис чем a ES6, большее сообщество, умные чуваки, грамотно разрабатывающие стандарт и, что самое главное, CS зависим от JS и не сможет нормально развиваться без JS, а JS развивается.

ТОТ_САМЫЙ 20.09.2015 07:45

Так ребят я не понимаю мне сравнение привести штоле раз вам не очевидно? Пофиг седня заверстаю страничку со сравнением если будет время.

ТОТ_САМЫЙ 20.09.2015 09:51

В кофескрипте есть все что есть в ES6, но в ES6 есть не все что есть в CoffeeScript. Кто может поспорить с этим утверждением?

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



func = -> yield do get



class Cat
  Object.defineProperty @prototype, 'name',
    get: -> alert 'NAME!!!'

new Cat().name



compile to:

var Cat, func;

func = function*() {
  return (yield get());
};

Cat = (function() {
  function Cat() {}

  Object.defineProperty(Cat.prototype, 'name', {
    get: function() {
      return alert('NAME!!!');
    }
  });

  return Cat;

})();

new Cat().name;

ТОТ_САМЫЙ 20.09.2015 10:23

Можно сахар написать (и можно его даже написать не засирая прототип, просто тогда надо будет писать set @, 'name' а не @set 'name')

Function.prototype.get = (name, getter)->
  Object.defineProperty @prototype, name,
    set: Object.getOwnPropertyDescriptor(@prototype, name)?.set
    get: getter
    configurable: yes
    enumerable: yes



Function.prototype.set = (name, setter)->
  Object.defineProperty @prototype, name,
    get: Object.getOwnPropertyDescriptor(@prototype, name)?.get
    set: setter
    configurable: yes
    enumerable: yes


class Cat
  @get 'name', -> alert 'GET NAME!!!'
  @set 'name', -> alert 'SET NAME!!!'


(new Cat).name
(new Cat).name = 22


compile to:
var Cat;

Function.prototype.get = function(name, getter) {
  var ref;
  return Object.defineProperty(this.prototype, name, {
    set: (ref = Object.getOwnPropertyDescriptor(this.prototype, name)) != null ? ref.set : void 0,
    get: getter,
    configurable: true,
    enumerable: true
  });
};

Function.prototype.set = function(name, setter) {
  var ref;
  return Object.defineProperty(this.prototype, name, {
    get: (ref = Object.getOwnPropertyDescriptor(this.prototype, name)) != null ? ref.get : void 0,
    set: setter,
    configurable: true,
    enumerable: true
  });
};

Cat = (function() {
  function Cat() {}

  Cat.get('name', function() {
    return alert('GET NAME!!!');
  });

  Cat.set('name', function() {
    return alert('SET NAME!!!');
  });

  return Cat;

})();

(new Cat).name;

(new Cat).name = 22;



Можно вот так писать для красоты и.т.п.
class Cat

	get Cat, 'name', ->
		alert 'GET NAME!!!'
		
	set Cat, 'name', ->
		alert 'SET NAME!!!'

FINoM 20.09.2015 11:58

ТОТ_САМЫЙ, в своём коде ты: расширяешь прототип встроенного конструктора, определяешь дескриптор дважды, вызывая 4 функции (getOwnPropertyDescriptor x 2, defineProperty x 2), упоминаешь имя класса несколько раз (get Cat, 'name'), оставляя почву для ошибок при переименовании класса. Ну ок, если ты считаешь, что эти костыли - отличное решение. Кто-то на php прожит и ничего, все живы.

ТОТ_САМЫЙ 21.09.2015 02:36

FINoM, нет я не расширяю. Ты просто тупой. Перечитай. Ты вообще не читал походу.
Вызываю дескриптор дважды и нет причин этого не делать. Я мог единожды но мне так больше нравится.
Нет я не упоминаю имя класса гескоьько раз. Ты просто тупой. Перечитай.
Когда я определяю статические методы я тоже упоминмю. Но ты тупой. Ты это игнорируешь.
Нет причин не упоминать имя класса несколько раз. Вместо имери класса можно писать @ но тупой, текст не читал и этого не знаешь.
Что из того что там написано костыль, если то что там написано это сахар?
Ты вообще читал тпкст или только код сиотрел? Если второе то ты тупой.

Я вообще не понимпю, на этом форуме не иупые люди то вообще остались, кроме кобеззы???

ТОТ_САМЫЙ 21.09.2015 02:49

FINoM,
Учитывая что ты не такой умный я проговорю очевидность: то чть функция дефайна вызывается 2 раза это не минус так как данный участок кода(декларация классов) не является горячим и не требует оптимизации и приоритет надо ттдавать абстракциям и сахарности. Но ты тупой и не понял 100% из того что я щас сказал.

FINoM 21.09.2015 11:54

ТОТ_САМЫЙ,


Господа модераторы, персонаж перешел на прямые оскорбления. Просьба отреагировать на это в соответствии с правилами форума.

ТОТ_САМЫЙ 21.09.2015 14:05

FINoM, ты прочитай че я написал и че ты напсиал. Ты пьяный штоле был? Ты вчитайся в буквы которые я пишу и как на это реагируешь ТЫ. Я говорю ему что @ и имя класса в теле класса это одно и то же и что мол для наглядности и красоты можно писать get ClassName а не get @
а он мне "Ты пишешь имя класса каждый раз из за чего возможно опечататься" ты че поехавший??? опечатывальщик хренов. ты сам то веришь в что говоришь? в ES6 статические всегда так и обьявляются и там можно опечататься? Ты если название функции где то пишешь много раз то МОЖНО ЖЕ ОПЕЧАТАТЬСЯ)!!!!! Купи мозг парень, просто купи мозг, и трезво воспринимай аргументы мои.

п.с. ага, "тупанул @ прикинься троллем (с) FINoM"


Часовой пояс GMT +3, время: 14:38.