浅いオブジェクト、行列、関数の違い

2600 ワード

  • 大部分の対象向けプログラミング言語は、「クラス」を対象とした体系の文法的基礎である.
  • JavaScript言語はそうではありません.オブジェクト指向プログラミングは「原型オブジェクト」
  • に基づいています.
    一、グローバルオブジェクトObject
  • 構築関数
  • JavaScriptは構造関数によって新しいオブジェクトを生成するので、構造関数はオブジェクトのテンプレートとして見られます.インスタンスオブジェクトの属性と方法は、コンストラクタの内部に定義されます.
    function Object(){this.  1 = 'aa'};//    
    var   1 = new Object();//    
    
  • オブジェクト例
  • プロトタイプオブジェクト上のすべての属性と方法は、派生オブジェクトによって共有されます.これがJavaScript継承メカニズムの基本設計です.
      1.  1//'aa'
    
  • コンストラクタのprototypeオブジェクト
  • 構造関数によってインスタンスオブジェクトを生成すると、プロトタイプオブジェクトが自動的にインスタンスオブジェクトに割り当てられます.各コンストラクタにはプロトタイプの属性があります.この属性はインスタンスオブジェクトのプロトタイプオブジェクトです.オブジェクトのプロトタイプに属性と方法を追加する場合、プロトタイプの属性によって追加されます.
    Object.prototype.  2 = ‘bb’
      1.  2//'bb'
    
  • 直接にオブジェクトのインスタンスに属性と方法を追加すると、近くの原則として、まずインスタンス上の属性に行き、プロトタイプチェーンに
  • を探さなかった.
      1.  3 = ‘cc';
      1.  3//'cc'
      1.  2//‘bb’
      1.  1//‘aa’
    
  • Object.prototypeオブジェクトの原型
  • Object.prototypeオブジェクトの原型は、属性や方法がないnullオブジェクトです.nullオブジェクトは自分の原型がありません.
    Object.getPrototypeOf(Object.prototype)// null
    
  • プロトタイプチェーン
  • オブジェクトの属性や方法は、自分自身で定義されている可能性もありますし、モデルオブジェクトで定義されている可能性もあります.原型自体も対象であり、自分の原型があるため、プロトタイプチャーンが形成されました.
      1._proto_===Object.prototype
    Object.prototype._proto_  null  
    
    prototypeオブジェクトにはconstructor属性があり、デフォルトではprototypeオブジェクトの配置関数を指します.
  • constructor属性がprototypeオブジェクト上で定義されているため、全てのインスタンスオブジェクトに
  • を継承することができることを意味する.
    constructor:function Object()
    
  • すべてのオブジェクトのプロトタイプは最終的にObject.prototypeに遡ることができます.すなわちObjectコンストラクタのprototype属性が指すオブジェクト
  • です.
      1_proto_         prototype  
      _proto_ ===     .prototype
    
    二、グローバルオブジェクトFunction
  • グローバルのFunctionオブジェクトには、自分の属性と方法がありません.
  • は、自身も関数であるため、プロトタイプチェーンを介してFuntion.prototypeから部分的な属性と方法を継承することもある.
  • Functionは、構造関数
  • である.
    Function関数によって新しいFunctionオブジェクトを生成することができます.JavaScriptでは、各関数は実際には一つのFunctionオブジェクトです.
    var    = new Function()
    
  • 構築関数の原型
  • Function._proto_===Object.prototype
    
    したがって、関数の例は、自分のコンストラクタprototypeオブジェクトの属性と方法に加えて、Objectのprototypeの属性と方法を継承します.
    三、グローバルオブジェクトAray
  • 配列は同様のリストのオブジェクトであり、プロトタイプにはエルゴードおよび要素を変更する多くの方法が提供されている.
  • 配列の長さおよび要素のタイプは固定されていない.
  • キーの名前は順序正しい数値で、0から
  • です.
  • 構築関数
  • function Array()
    
  • オブジェクト例
  • var      = new Array()
    
  • プロトタイプ
  •     ._proto_===Array.prototype
        ._proto_._proto_===Object.prototype
    
    したがって、関数はオブジェクトで、オブジェクトの属性方法を継承します.