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 では、プリミティブ (ブール値、数値) 以外のすべてが、新しいオブジェクトを作成することができますが、 JavaやC# などの OOP 言語の意味ではありませんObjectArrayString{}Function

ご覧のとおり、JS はプロトタイプ言語です。すべてのオブジェクトには、 と呼ばれる特別なメンバーがありprototypeます。を呼び出すsomeObject.someMemberと、someMemberが検索され、そこでsomeObject見つからない場合、エンジンは を検索します。someObject.protoype通常は somepreviousObjectです。として参照するため、それsomeObjectは のサブクラスであると言えます。OOP 言語とは異なりますが、サブクラス化とほぼ同じように機能します。previousObjectpreviousObjectprototype

このようなオブジェクトから新しいオブジェクトを作成できます

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 に答える