相手に対するjsの理解を話す.


阮一峰のネット日記に感謝します.対象に向けた理解を共有しました.http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inherityance.
1、構造関数の長所と短所:
  コンストラクタとはパッケージのことです.いくつかのオブジェクトの属性を関数体の中に入れます.このような関数はロード時にプリコンパイルされます.
var cat 1=new Cat(「大毛」「黄色」);実用化
実際の例としては、コンストラクタをオブジェクトにしますが、複数の新規オブジェクトが実装されている場合は、コンストラクタが常に大量のメモリをコピーされていることに等しいので、いくつかの必要があります.この時はプロトタイプが必要です.
Javascriptは、各構造関数にはprototype属性があり、他のオブジェクトを指すと規定しています.このオブジェクトのすべての属性と方法は、構造関数の例によって継承されます.
 
だからプロトタイプの利点は非常に明らかで、私たちはいくつかの不便な属性と方法をプロトタイプの中に置くだけで、同じメモリアドレスを指すことができます.
2.対象の継承
   オブジェクト継承は二つの場合に分けられ、一つは構造関数の継承であり、一つはプロトタイプの継承である.
   第一:構造関数の継承は比較的簡単で、サブオブジェクトにのみコードを追加する必要があります.
function Cat(name,color){
    Parent.apply(this, arguments);
    this.name = name;
    this.color = color;
  }
第二
:原型の継承最適化の方法については、
空いているオブジェクトを仲介に使う
function extend(Child, Parent) {

    var F = function(){};
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.uber = Parent.prototype;
  }
が使用する場合、方法は以下の通りです.
 extend(Cat,Animal);
  var cat1 = new Cat("  ","  ");
  alert(cat1.species); //   
第三、
コピー引継ぎ
    私達も考えを変えて、純粋に“コピー”の方法を採用して継承を実現します.簡単に言えば、親オブジェクトの属性と方法を全部コピーすれば、子オブジェクトにコピーしても継承が可能ではないですか?
  function extend2(Child, Parent) {
    var p = Parent.prototype;
    var c = Child.prototype;
    for (var i in p) {
      c[i] = p[i];
      }
    c.uber = p;
  }