3

随着 ES6 的到来。所以我想知道什么时候使用类以及什么时候在javascript中使用简单的函数。

作为函数也能够创建新对象。

4

1 回答 1

7

JsClass只是语法糖

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这样的everytrhing even中创建的ArrayString或者{}或者Function能够创建新对象,但不是像 Java 或 C# 这样的 OOP 语言的含义。

你看,JS 是原型语言。每个对象都有一个叫做 的特殊成员prototype。如果您调用someObject.someMembersomeMember则会在其中搜索someObject,如果在其中找不到,则引擎会在 中查找someObject.protoype,通常是 some previousObject。你可以说,那someObject是 的子类previousObject,因为它引用previousObject为它的prototype. 它与 OOP 语言不同,但它的工作方式几乎与子类化相同。

您可以像这样从任何对象创建新对象

var newObject = {};
newObject.prototype = previousObject;

或者

var newObject = Object.create(previousObject);

或者

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

或者

class newObject extends previousObject { ... }
于 2016-05-27T07:34:48.787 回答