は、オブジェクト指向プログラミングにおいて、クラスとオブジェクトは、ダイカストと鋳物の関係として考えられ、オブジェクトは常にクラスから作成される.はプロトタイププログラミングの思想の中で、クラスは必要ではありません.オブジェクトは、他のオブジェクトをクローンすることによって得られたもので、あるオブジェクトと同じオブジェクトが必要であれば、プロトタイプを使用することができます.
Object.creatは、Object.create方法に対応していないブラウザでオブジェクトvar Plane = function(){
this.blood = 100;
this.attackLevel = 1;
this.defenseLevel = 1;
};
var plane = new Plane();
plane.blood = 500;
plane.attackLevel = 10;
plane.defenseLevel = 7;
var clonePlane = Object.create( plane );
console.log( clonePlane ); // :Object {blood: 500, attackLevel: 10, defenseLevel: 7}
をクローンするために使用されてもよい.クローンは、オブジェクトを作成する手段である.
原型チェーン
プロトタイプチェーンがあると仮定します.Object=>Animal=>Dug
Dugオブジェクトを呼び出す方法を試してみましたが、それ自体はこの方法がない場合、このオブジェクトはこの要求をプロトタイプのAnimalに委託し、プロトタイプのチェーンに沿ってこの方法を見つけるか、ルートのオブジェクトに到達するまで依頼します.
JavaScriptの原型継承
はJavaScriptの設計者の意図によって、undefined以外はすべて対象であるべきです.この目標を達成するためには、number、bollan、stringといったいくつかの基本的なタイプのデータも、「包装類」という方式で対象型のデータとして処理することができます. jsのルートオブジェクトはObject.prototypeオブジェクトです. jsの関数は、普通の関数として使用されても良いし、コンストラクタとして起動されても良い.new演算子を使用して関数を呼び出すと、この関数がビルダです.
はjsの本当の実現について、対象が原型があるとは言えなくて、オブジェクトのコンストラクタに原型があるとしか言えなくて、対象は要求をそのコンストラクタの原型に任せます. jsはオブジェクトにプロトの隠しオブジェクトとしてプロトを提供しています.プロトはコンストラクタの原型オブジェクトを指しています.手動で新しいオブジェクトに正しい設定を設定します.プロト.指向は、Object.create = Object.create || function( obj ){
var F = function(){};
F.prototype = obj;
return new F();
}
を使用することができます.
jsのオブジェクトは最初はObject.prototypeオブジェクトによってクローンされていたが、オブジェクトビルダーの原型は他のオブジェクトを動的に指して継承効果がある.は、一つの「クラス」を実現し、他のクラスを継承する効果obj.__proto__ = Constructor.prototype
. bのすべての属性を遍歴してみましたが、name が見つかりませんでした.
は要求をbのコンストラクタのプロトタイプに委託します.bを通じて(通って)BのプロトタイプはAコンストラクタによって作成されたオブジェクトです.
Bのプロトタイプの中にまだname属性が見つからないので、new A()オブジェクトのコンストラクタプロトタイプA.prototype に依頼する.
A.prototypeでname属性を見つけ、彼の値を返します.
継承は、常にオブジェクトとオブジェクトの間で行われる. Object.prototyeの原型はnullであり、依頼がここに来たが、該当する属性が見つからなかった場合、undefined に戻る.
設計モードは言語不足の補足です.構築器のプロトタイプを設定することによってプロトタイプの継承が実現されると、最初のオブジェクトObject.prototype自体の外には、どのオブジェクトにもプロトタイプがあります.Object.createによってプロトタイプのないオブジェクトが作成されます. Es 6のクラス文法の背後にはまだプロトタイプ機構によってオブジェクトを作成します.