[オブジェクト指向]は大方言(転載自己教師Alley-路地)とオブジェクト指向継承(V)の「魔法」という方法をひきます

001プロトタイプチェーン

コードをコピー
プロトタイプチェーンとは何ですか?
     説明:__proto__はプロトタイプチェーンによって形成された鎖と呼ばれる

     、オブジェクトのインスタンスを、我々は人のコンストラクタを作成するとはfanchenオブジェクトがインスタンス化され、我々の出力、__proto__内部のオブジェクトのインスタンスでありますプロパティは、このプロパティは__proto__ポイントコンストラクタ自身のプロトタイプを作成することであるプロトタイプは、したがって、確かに内部のオブジェクトなので、それはプロトタイププロトタイプオブジェクト内部の人にこのポイントのオブジェクトをインスタンス化__proto__言うことです__proto__があるでしょう。そして、この__proto__ポイントはPersonオブジェクトのコンストラクタを作成することです、人を作成した人を想像?私たちが言っているこの時間は、「すべてがオブジェクトである。」確かに人を作成することが目的です。そして、このオブジェクトは関数です。そこには、__proto__されますので、必ずオブジェクトです。だから我々はあなたがそれの外にオブジェクトを作成することができるか想像できますか?だから、オブジェクトの上部がnullである。次はケースとメモリマップ詳細な説明の波を使用します

       

       

 

 

要約:
     プロトタイプチェーン:__proto__によって形成されたチェーン
          __proto__ポイント内部のオブジェクトがnullの場合
コードをコピー

 継承されたメソッド002

コードをコピー
継承:
     私たちは、プロパティが継承されていると言う最後の章では、我々はメソッドを継承しました。継承メソッドが良い品種に分割され、その後、我々は、継承の最も完璧な方法を見つけるために一つ一つを解析し

     、最初のプロパティの継承を見てみましょう、のは、コンストラクタの人を書いてみましょう。そして、オブジェクトfanchenのインスタンスを作成します

 

 

 现在我们可以继承到父级的属性了,但是貌似父级的方法继承不了,因为我看到__proto__里面只有一个work这个方法。那么我们如何继承父级的方法呢?我们可以试想一样fanchen是如何访问到work这个方法的?因为实例化对象里面的__proto__指向是创建自己的那个构造函数的原型对象因此可以访问。那么如果现在我用Man的原型对象指向Person的原型对象会发生什么?
コードをコピー

 1、原型继承

コードをコピー
Man的原型对象指向Person的原型对象
 

 

貌似是可以的,但是这个原理是什么呢?同时注意一下上面的constructor的指向。接下来我们画一个内存图来解释一下原理和弊端。

从上面的内存图中我们不难看出当Man的原型指向Person的原型的时候首先Man的原型对象断掉了,随后我们又给Man的原型添加了方法work,这个时候你会发现Man的work方法加到了Person身上。这样肯定是不行的,因为我们怎么能修改父级的原型对象呢?顺便我们可以在打印出来父级的原型看一下

 

因此这个原型继承肯定是不行的,那么接下来我们说下原型继承缺点
 
缺点:子类原型发生改变父类原型也会发生改变
コードをコピー

 2、原型拷贝

コードをコピー
上面的方法肯定不是特别合理的,那么我们可以想一下既然不能直接将Man的原型指向Person的原型,那么我们可不可将Person里面原型对象的属性直接拷贝一份,这样我就不会直接修改到父级的原型了?
废话少说直接上代码

  

貌似特别完美,接下来我们在查看一下父级有没有发生改变

真的没有什么问题啊。那么接下来我们通过内存图来查看下原理及缺点

 

 

从内存图中可以看出我们的Man只是拷贝了一份Person的方法,然后Man里面的方法的指向还是指向Person的里面方法的原型。随后我们又在Man上面添加了一个work方法。这样我们既不会污染Person也能实现了继承,但是缺点也显而易见了
 
缺点:假设Person上面还有父级  那么我们的Man是无法访问到Person父级的原型上的方法
コードをコピー

 図3に示すように、プロトタイプ継承チェーン

コードをコピー
例するので、人のインスタンスを指すことができ、我々はプロトタイプチェーンについて話す前の章から、私たちは親と内部の親の親にアクセスするためのプロトタイプチェーンのプロパティとメソッドの一部を渡すことができることを知ることができるので、私たちは、この機能の男のプロトタイプオブジェクトを利用します私は__proto__があると確信しているので、我々はプロトタイプチェーンを形成しました。次はケース図表現するとメモリを使用します

  

  

  印刷が本当に親の方法でもアクセスできますが、欠点がある見ることができます出てきたとき、私たちは簡単にいくつかの年齢名のセックスと値が定義されていない以上内側に__proto__の男を見つけることができますか?

コードをコピー

 4、混合継承

コードをコピー
それが継承する上記のプロトタイプチェーンから見ることができ、そして私たちは、constructorプロパティだけでなく、厄介な性質の多くを失ったfanchenプリントアウトしたときに、その後、どのように我々はそれを解決しそうであるように?私たちは一歩一歩を行きます
  

  

この時間は、あなたは最終的には完璧な継承を達成していることがわかります。

 
 
コードをコピー

 図5に示すように、寄生継承

コードをコピー
インターネットは、多くの場合、寄生継承と呼ばれる方法が表示されます。実際には、あなたが考えることができるの名前を確認するために、我々は同じである寄生虫のようなものを必要としています。実際には、ファンクションセンター
 

 

 

 

 
 
コードをコピー

 

おすすめ

転載: www.cnblogs.com/mp-0518/p/11440520.html
おすすめ