5 ms·
I was just talking to my friend who works at NetFlix on the frontend team about ES6, he is most excited about destructuring `let { name, age, gender } = user;`.
by nodesocket 11y ago
I was just talking to my friend who works at NetFlix on the frontend team about ES6, he is most excited about destructuring `let { name, age, gender } = user;`. I however advocate that the new class syntax is the best part of ES6. Take the following trivial OOP example, which I think reads so much easier a lot like PHP.
"use strict";
class Vehicle {
constructor(name) {
this.kind = 'Vehicle';
this.name = name;
}
printName() {
console.log(this.name);
}
}
class Car extends Vehicle {
constructor(name) {
super(name); //call the parent method with super
this.kind = 'Car';
}
}
let myCar = new Vehicle('Mercedes');
console.log(myCar);
- mkozlows 11y agoI think it's fair to say that people who want to write object-oriented Javascript are very excited by class. Those of us who have found that the non-OO nature of Javascript is part of what makes it so productive are... much less excited.
- TazeTSchnitzel 11y ago`class` trades the flexibility of prototypes for the familiarity of other languages. :(
- domenicd 11y agoThis is just false. `class` is sugar over prototypes. Nothing is lost.
- TazeTSchnitzel 11y agoYes, it is just "sugar", but it cements one way of doing things.
- jonpress 11y agoJavaScript is object oriented just like any other language. The difference is that it is prototype-based OO instead of class-based OO. I would say that JavaScript's OO is actually more powerful/flexible than other languages but it is less readable and more error prone if you're not careful - For example, the fact that objects can 'borrow' a method from other object an apply it to themselves is a common source of issues for beginners.
- smt88 11y agoIt's possible to get power without flexibility. Flexibility is bad -- it creates code that is idiomatic to the person who wrote it. Rust and Go are so exciting because they've intentionally rejected flexibility without compromising power.
- tragic 11y agoFlexibility is not 'bad' - it's a tradeoff. More flexible languages are better for writing DSLs, etc; but using them means a lot of self discipline regarding code style. One thing I wish JS had is a PEP8-style canonical style document. I would find that more useful than classes. On classes, I am among the less excited about them; however, we are in a ridiculous situation where there are about 500 different library implementations of class inheritance. Backbone has one. Ember has one. Node has util.inherits. Various transpile-to-JS languages (CS, TS) all have their own slightly-different implementations of the resulting prototype code. There is plainly a need for classes in JS, felt by some of the leading projects in JS land. ES6 classes at least gives all these disparate implementations a refactoring target. How many of them will get there is another matter.
- smt88 11y ago> using them means a lot of self discipline regarding code style. That's bad. Few developers have self-discipline. The ones who do still have different rules than you do. That makes reading, understanding, and modifying their code harder. Sounds bad, doesn't it? There's a reason the most experienced devs rage against extremely flexible languages like PHP and JavaScript and are excited about new, ultra-rigid languages.
- deleted 11y ago[deleted]
- akilism 11y agoyep. personally I've taken a much more functional approach to my javascript development that barely relies on oop.
- phoenixmatrix 11y agoYup. The class keyword is a huge step backward, and it was only put it because of a very different world several years ago when all this was put into motion. It is just a wrapper around prototypal inheritance, but hides a lot of the features in favor of making things look like other OOP languages, even though it isn't. It is also very debatable if classic OOP is even good at all. JS was heading in the right direction, with more functional approaches, factory based object creation, etc... and now it's all back to square one. Fortunately I work on a product where most devs have functional programming backgrounds, so the argument isn't too hard to make. But I fear for the community in general.
- thwarted 11y agoWhy can all this new syntax be added, but the "use strict" pragma is still specified by a string? It made sense to send messages to the interpreter in a backwards compatible way, but now it just seems odd.
- nodesocket 11y agoNot entirely sure if browsers require "use strict;", but io.js (node) does.
- silverwind 11y agoIn iojs/node, you can force v8 strict mode through the --use_strict flag, saving you from writing in every file.
- v413 11y agoAll code in modules is in the context of "use strict" by default so it won't be necessary to use this pragma explicitly.
- Kiro 11y ago> he is most excited about destructuring `let { name, age, gender } = user;`. Why is this a big deal? Seems pretty trivial.
- robinson7d 11y agoOne of the reasons that it's a big deal is because of what it means for functions. It helps make named-parameters more attractive, which can help a lot with code maintainability. Example code: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Function_argument_defaults https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe... Additionally, it's nice sugar for module loading, for modules that export multiple values.
- akilism 11y agoI'm with him, I'm pretty excited about destructing coming to JS. If it's half as powerful as it is in clojure it'll be great.