jsの中の対象は何種類の方法を継承しますか?
1プロトタイプの原型チェーンはすべてのjavascriptを継承します.プロトタイプの原型オブジェクトの属性と方法を継承します.例えば、dateオブジェクトは、Date.prototypeの原型オブジェクトから属性と方法arrayオブジェクトを継承し、Aray.prototypeの原型オブジェクトから属性と方法を継承するには、親タイプが必要です.
特徴:例としては、自分のインスタンスのプロパティを継承することができますが、父のクラスの構造関数属性のモデルとしての欠点:サブクラスのプロトタイプの属性と方法を継承することはできませんが、単一の継承のみを行うことはできません.
特徴:例としては、自分のインスタンスのプロパティを継承することができますが、父のクラスの構造関数属性のモデルとしての欠点:サブクラスのプロトタイプの属性と方法を継承することはできませんが、単一の継承のみを行うことはできません.
function Person() {
this.name;
this.sex;
this.sleep = function () {
return " ";
};
this.eat = function () {
return " "
}
}
//
Person.prototype.job = function () {
return " ";
};
Person.prototype.color = " ";
function Child() {
this.age = 20;
}
Child.prototype = new Person(); //
var child = new Child();
console.log(Child.prototype);// Person
console.log(child instanceof Child); ///true
console.log(child instanceof Person); //true
2構造関数は直接call applyを使って構造を継承し、直接にサブクラスの内部に長所を書きます.パラメータの欠点を親に伝えることができます.サブクラスの例は、自分が親ではないことです.親タイプのみを引き継ぐ構造属性と方法は、原型属性と方法をコピーできません. //
function Animail(s, a) {
this.sex = s;
this.age = a;
this.sleep = function () {
return " ";
}
}
//Animal
Animail.prototype.color = " ";
//
function Type(t) {
this.type = t;
}
//
function Cat(n, s, a, t) {
this.name = n;
this.eat = function () {
return " "
}
Animail.call(this, s, a);
Type.apply(this, [t]);
}
//
var cat = new Cat(" ", " ", 2, " "); //
console.log(cat);
/
console.log(cat instanceof Cat);//true
console.log(cat instanceof Animail);//false
console.log(cat instanceof Type);//false
3例の継承原理は、サブクラス内で直接に親クラスを構成する実例的な利点である.親パラメータに伝達できるが、呼び出しを制限しない方式の欠点:多くの継承ができない.サブクラスの構造属性と方法の例を取得できませんでした.サブクラスを継承する例は自分ではなく、親です. //
function Person(n, s) {
this.name = n;
this.sex = s;
this.sleep = function () {
console.log(this.name + " ");
}
}
//
function Child(n, s) {
var per = new Person(n, s);
return per;
}
//
var child = new Child(" ", " ");
console.log(child instanceof Child);//false
console.log(child instanceof Person);//true
4コピー相続の原理は、親類の中の属性方法をサブクラスにコピーすることである.例としては、自身が親類の子ではなく、親類にパラメータを伝えることで、複数の継承をサポートすることができる.function Animal(n) {
this.name = n;
this.sleep = function () {
return this.name + " "
}
}
function Cat(n, a) {
this.age = a;
//
var animal = new Animal(n);
for (var p in animal) {
Cat.prototype[p] = animal[p];
}
// new
}
/* Cat.prototype.name="";
Cat.prototype.sleep=function (){
};*/
//
var cat = new Cat(" ", 3);
console.log(cat);
console.log(cat instanceof Cat);//true
console.log(cat instanceof Animal);//false
5グループ継承構造+プロトタイプチェーン継承サブクラスの例では、自身もプロトタイプオブジェクト属性の共有を実現するために、2回の父親の構造関数を呼び出しました. function Person(n) {
this.name = n;
this.sleep = function () {
return this.name + " ";
}
}
Person.prototype = {
job: function () {
return this.name + "job";
}
}
function Child(n, a, s) {
this.age = a;
this.sex = s;
//
Person.call(this, n);
}
//
Child.prototype = new Person();
var child = new Child(" ", 18, " ");
console.log(child);
console.log(child instanceof Child); //true
console.log(child instanceof Person);//true
6寄生結合継承は、組み合わせ継承の欠点を処理するために、親の構造関数を2回呼び出すことを避ける原理は、父のタイプの原型を空のオブジェクトに与えたプロトタイプのサブオブジェクトの例である.すなわち、自身も父のタイプである.function Person(n) {
this.name = n;
this.sleep = function () {
return this.name + " ";
}
}
console.log(Person.prototype);
function Child(n, a) {
this.age = a;
this.eat = function () {
return this.name + " "
}
Person.call(this, n);
}
//
(function () {
var fn = function () {
};
//
fn.prototype = Person.prototype;
Child.prototype = new fn();
})();
var child = new Child(" ", 20);
console.log(child);
console.log(child instanceof Child); //true
console.log(child instanceof Person); //true