【发布时间】:2016-05-27 07:26:54
【问题描述】:
随着 ES6 的到来。 所以我想知道什么时候用class,什么时候用simple function 在javascript中。
作为函数也可以生成新对象。
【问题讨论】:
-
当你需要一个类(带有原型对象的构造函数)时,你可以使用
class。当你需要一些其他功能时,你可以使用function。
标签: javascript es6-class
随着 ES6 的到来。 所以我想知道什么时候用class,什么时候用simple function 在javascript中。
作为函数也可以生成新对象。
【问题讨论】:
class。当你需要一些其他功能时,你可以使用function。
标签: javascript es6-class
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# 等 OOP 语言。
你看,JS 是原型语言。每个对象都有一个名为prototype 的特殊成员。如果您调用someObject.someMember,则在someObject 中搜索someMember,如果在那里找不到,引擎将在someObject.protoype 中查找,其中通常是一些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 { ... }
【讨论】: