2017-02-22 5 views
1

最後に、ファイルの終わりにあるスクリプトタグにスパゲッティコードを詰め込むのではなく、時間をかけてプログラミングに慣れていくことにしました。 YDKJSは私の意見では素晴らしいリソースです。私は工場のパターン、IFFE、オブジェクトとObject.create(...)の使い方をよく理解しています。JavaScriptコンストラクタ関数の使用例

私が答えを見つけることができない1つの質問は、コンストラクタ関数がまだ使用されているかどうかです。もしそうなら、それらのユースケースは何ですか?私が尋ねる唯一の理由は、それが答えであった何年もの記事があるからです。アイデアは、クラスベースの継承(pre es6)に近づくことだと思われます。

基本的に私は学習に時間を投資すべき設計パターンですか?

+0

Kyle Simpsonのビデオでは、JS自体が成熟していないとしてもクラスベースのように感じられるように、コンストラクタがES6に導入されていると言われています。 – Rikin

+1

彼はES6以前のコンストラクタ関数について語っています@Rikin –

+0

"何年もの記事がありましたが、それは答えでした*" - 何に対する答え? – Bergi

答えて

0

コンストラクタ関数は、接頭辞と一緒に使用するように設計されています。新しいプレフィックスは、関数のプロトタイプに基づいて新しいオブジェクトを作成し、そのオブジェクトを関数の暗黙のthisパラメータにバインドします。

出典:コースのコンストラクタダグラス・クロックフォード

+0

彼らは何であるかを完全に知っています。主にJSのデザインパターンであるかどうかを調べます。 – nerdlyist

1

によって良い部分が意味をなすと使用されているJavaScriptの。次のことを考えてみましょう:

A = function() 
 
{ 
 
    this.foo = "bar"; 
 
}; 
 

 
A.prototype.printFoo = function() 
 
{ 
 
    console.log(this.foo); 
 
}; 
 

 

 
B = function() 
 
{ 
 
    this.foo = "foobar"; 
 
}; 
 

 
B.prototype = Object.create(A.prototype); 
 

 
aInstance = new A(); 
 
aInstance.printFoo(); // foo 
 

 
bInstance = new B(); 
 
bInstance.printFoo(); // foobar

簡素化ビット:newキーワードで関数を呼び出すときは、JSはコンストラクタとして扱い、それにthisという名前の空のオブジェクトを渡します。コンストラクタの戻り値を変数に代入すると、thisオブジェクトが含まれ、関数のプロトタイプのプロパティとコンストラクタ内で適用されたthisの変更によって拡張されます。したがって、コンストラクタは、JSでは極めて有用で必要なものです。

ES6では、コンストラクタ(および一般的なクラスオリエンテーション)がさらに顕著になりました。詳細についてはhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classesをご覧ください。

1

コンストラクタ関数はまだ使用されていますか?

はい、もちろんです。それらは、支配的なオブジェクト構築パターンであり、今後もそうであろう。それらはオブジェクトリテラルと同様に普及しています。それらはエンジンで最高のパフォーマンスの最適化を行い、多数のインスタンスが必要な場合に使用されます。また、初期化のためのコンストラクタとメソッド継承のプロトタイプを持つクラスパターンは、ES6以降の特別なclass構文で、最も便利なパターンです。

+0

「主なオブジェクト構築パターンであり、今後もそうなるでしょう」ということを明確にすることはできますか? – nerdlyist

+0

ほとんどそのパターンはどのように見えますか? – nerdlyist

+0

@nerdlyistあなたが言及したことは、 "*工場パターン、IFFEとObject.create(...)* "はすべてオブジェクトを構築するためのパターンであり、コンストラクタ関数は単なるものであり、最も一般的で頻繁に使用されるものです – Bergi

関連する問題