随着 ES6 的到来。所以我想知道什么时候使用类以及什么时候在javascript中使用简单的函数。
作为函数也能够创建新对象。
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中创建的Array
,String
或者{}
或者Function
能够创建新对象,但不是像 Java 或 C# 这样的 OOP 语言的含义。
你看,JS 是原型语言。每个对象都有一个叫做 的特殊成员prototype
。如果您调用someObject.someMember
,someMember
则会在其中搜索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 { ... }