Поскольку ES6 прибыл с классом. Поэтому я хочу знать, когда использовать класс и когда использовать простую функцию в javascript.
Так как функция также способна сделать новый объект.
Поскольку ES6 прибыл с классом. Поэтому я хочу знать, когда использовать класс и когда использовать простую функцию в javascript.
Так как функция также способна сделать новый объект.
Js Class
— это просто синтаксический сахар для
function SomeClass() {
// this is basically a constructor
this.property = 'some value';
};
SomeClass.prototype.someMethod = function() {
// here you define method logic
}
Если вы используете Babel или Typescript или вам просто не важна интероперабельность браузера, вы можете использовать нотацию class
, потому что ее проще писать, но по сути ничего не меняется.
Так как функция также способна сделать новый объект.
В JS все, кроме примитивов (логических, числовых), создается из Object
, поэтому все, даже Array
, String
, {}
или Function
, способно создать новый объект, но не в смысле языков ООП, таких как Java или C#.
Видите ли, JS — это прототип языка. У каждого объекта есть специальный член с именем prototype
. Если вы вызываете someObject.someMember
, someMember
ищется в someObject
, и если он там не найден, движок ищет в someObject.protoype
, где обычно находится previousObject
. Можно сказать, что someObject
является подклассом previousObject
, потому что он ссылается на previousObject
как на свой prototype
. Он отличается от языков ООП, но работает почти так же, как создание подклассов.
Вы можете создать новый объект из любого объекта, подобного этому
var newObject = {};
newObject.prototype = previousObject;
or
var newObject = Object.create(previousObject);
or
function newObject () { ... }
newObject.prototype = previousObject;
or
class newObject extends previousObject { ... }
class
, когда вам нужен класс (функция-конструктор с объектом-прототипом). Вы используетеfunction
, когда вам нужна какая-то другая функция. - person Bergi   schedule 27.05.2016