何时使用ES6类和何时在JavaScript中使用函数

4
随着ES6的到来,出现了class。因此我想知道在JavaScript中何时使用class以及何时使用简单函数。虽然函数也能够创建新对象。

当您需要一个类(具有原型对象的构造函数)时,使用“class”。当您需要其他函数时,请使用“function”。 - Bergi
1个回答

9

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创建的,因此甚至ArrayString{}Function都能够创建新对象,但这并不是像Java或C#这样的面向对象编程语言的意思。
您知道,JS是一种原型语言。每个对象都有一个特殊的成员叫做prototype。如果您调用someObject.someMember,则会在someObject中搜索someMember,如果在其中找不到,则引擎将查找someObject.protoype,通常会找到一些previousObject。您可以说someObjectpreviousObject的子类,因为它将previousObject作为其prototype引用。它与OOP语言不同,但工作方式几乎相同,就像子类化一样。
您可以像这样从任何对象创建新对象:
var newObject = {};
newObject.prototype = previousObject;

或者

var newObject = Object.create(previousObject);

或者

function newObject () { ... }
newObject.prototype = previousObject;

或者

class newObject extends previousObject { ... }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接