JSプロトタイプチェーンnewとObject.reat()はコードと継承を区別する方法です.
3327 ワード
/*var F=function(){}
var son=new F();
console.log(son.__proto__==F.prototype)//true*/
/* var F={a:1}
var son=Object.create(F);
console.log(son.__proto__); {a:1}*/
/*var F=function(){this.a=3; };
var f=new F();
var son=Object.create(F.prototype);
console.log(son.__proto__== F.prototype);//true*/
newはその対象です.プロト属性はこのクラスのプロトタイプを指し、createは表示の方向を直接指します.次の相続を実現します.第一種類:
Cat.prototype=new Animal();// new _ _proto_ _ prototype Cat.prototype.__proto__=Animal.prototype
認証:function Cat(){}
function Animal(){}
Cat.prototype=new Animal();
console.log(Cat.prototype.__proto__==Animal.prototype)//true
この方法の不足は、継承時に作成したオブジェクトを常に初期化するということです.だから私たちは直接に:Cat.prototype.__proto__==Animal.prototype
これが私たちの第二の方法です.第三種類:コールでお願いします
function Animal(name){
this.name = name;
this.showName = function(){
console.log(this.name);
}
}
function Cat(name){
Animal.call(this, name);
}
var cat = new Cat("Black Cat");
cat.showName();//Black Cat