js-JavaScriptプレミアムプログラミング学習ノート4

1823 ワード

第六章オブジェクト向けのプログラム設計
1、オブジェクト向けの言語には、クラスの概念があり、クラスを通じて同じ属性と方法を持つ複数のオブジェクトを作成できるというフラグがあります.例えばpython.ESにはクラスの概念はありません.
2、ESのオブジェクトは、ハッシュリストとして想像することができる.これは、データまたは関数の値のセットにほかならない.各オブジェクトは、参照タイプに基づいて作成されます.
3、ESオブジェクトには、データ属性とアクセサ属性の2つの属性があります.
4、アクセサ属性にはデータ値は含まれません.getterとsetter関数のペアが含まれています.
5、Objectを使用する.defineProperties()は、複数のプロパティとそのプロパティを定義できます.
6、Objectを使用する.getownPropertyDescriptor()メソッドは、プロパティのプロパティを取得し、オブジェクトを返します.インスタンス属性にのみ使用できます.プロトタイプ属性の記述子を取得するには、プロトタイプオブジェクトで直接呼び出す必要があります.
7、コンストラクション関数と一般関数の唯一の違いは、呼び出し方法が異なることです.任意の関数は、newオペレータによって呼び出され、構造関数として使用できます.
8、オブジェクトのプロパティを呼び出すとき、2つのステップで検索します.インスタンスを検索し、このプロパティがなければプロトタイプを検索します.これが、複数のオブジェクトインスタンスがプロトタイプに保存されている属性とメソッドを共有する基本原理です.P148
9、オブジェクトインスタンスに属性を追加すると、この属性はプロトタイプオブジェクトに保存されている同名の属性をマスクし、プロトタイプの属性にアクセスすることはできませんが、プロトタイプ属性は変更されません.
10、単独で使用すると、inオペレータは、インスタンスに存在するかプロトタイプに存在するかにかかわらず、オブジェクトを介して指定した属性にアクセスできるかどうかtrueを返します.hasOwnProperty()メソッドと組み合わせて、このプロパティがインスタンスに存在するかプロトタイプに存在するかを決定できます.
1 function hasPrototypeProperty(object,name){
2     return !object.hasOwnProperty(name)&&(name in object);
3 }

11、Objectを使用する.keys()とObject.getownPropertyName()メソッドは、for-inループの代わりにオブジェクト上のインスタンス属性を取得するために使用できます.前に取得したのは列挙可能な属性であり,後者はすべてである.
12.インスタンス内のポインタはプロトタイプのみを指し、コンストラクション関数は指しません.原型を書き直すときは慎重にしなければならない.
13、カスタムタイプを作成する最も一般的な方法は、コンストラクション関数とプロトタイプモードを組み合わせて使用し、コンストラクション関数はインスタンス属性を定義するために使用され、プロトタイプモードは方法と共有の属性を定義するために使用される.
14、寄生組合せ式継承は参照タイプの最も理想的な継承パターンである.P172.