JSオブジェクト指向の継承

継承されているものを教えするには

1、継承コンストラクタアプリケーションに関連付けられている
コンストラクタが継承プロパティおよび別のコンストラクタの方法を指すように、2
3、2つのコンストラクタとの間に連続して発生
ES6を提供以下がES5および方法から導入されました継承された一般的な方法について

ES5は、一般的な方法を継承しました

1、プロトタイプ継承
1--プロトタイプオブジェクトの継承継承プロトタイプ:
シンプルで使いやすい、便利、操作するためには
、しかし、体は唯一継承プロトタイプのメソッドとプロパティができ、コンストラクタのメソッドとプロパティを継承することはできません

//父构造函数
function Parent(){
     this.name = "parent";
}
Parent.prototype.name = "parent";
Parent.prototype.show = function(){
    console.log("哈哈哈");
}
//子构造函数
function Child(){

}

// 深拷贝
for(var i in Parent.prototype){
    Child.prototype[i] = Parent.prototype[i];
}

var p = new Parent();
p.show();
console.log(p.name);

var c = new Child();
c.show();
console.log(c.name);

継承プロトタイプ2 -プロトタイプチェーン継承:
1.よりシンプル、便利に、簡単に操作するための
2だけでなく、属性とメソッドのプロトタイプボディを継承するだけでなく、コンストラクタメソッドとプロパティを継承することができます
。3.しかし、便利なパラメータが渡さ
原理を://子例C - > プロト - > Child.prototype - >親の例- > プロト - > Parent.prototype

//父构造函数
function Parent(n)
    this.name = n;
}
Parent.prototype.show = function(){
    console.log(this.name);
}

//子构造函数
function Child(){
}

Child.prototype = new Parent();


var p = new Parent("张三");
console.log(p)
p.show();
console.log(p.name);

var c = new Child();
console.log(c);
c.show();
console.log(c.name);

図2は、コンストラクタコンストラクタボロー多重継承延び
:コンストラクタ継承(継承変化この時点)
1.簡単にパラメータを渡す
2.多重継承をも実現することができる
、特性またはコンストラクタの内部を継承することができる方法ではなく、継承が3. prototypeプロパティやメソッドの本体

function Mp3(){
    this.music = "放音乐";
}
function Camera(){
    this.photo = "拍照";
}
function Tel(){
    this.call = "打电话";
}
function Email(){
    this.message = "发信息";
}

function MobilePhone(n){
    Mp3.call(this);
    Camera.call(this);
    Tel.call(this);
    Email.call(this);
    this.name = n;
    this.game = "打游戏";
}

var mp = new MobilePhone("HUAWEI P30");
console.log(mp);

3、継承の組み合わせ

混血継承:コンストラクタの継承プロトタイプ継承+
1やや複雑
2.コンストラクタを継承することができる、とプロトタイプ継承でき
渡す3.便利なパラメータ
4.多重継承缶コンストラクタ
5.注:プロトタイプ継承チェーンを、残っているパラメータをリスク

function Parent(s){
    this.skill = s;
}
Parent.prototype.show = function(){
    console.log(this.skill);
}

function Child(s){
    Parent.call(this, s);
}
for(var i in Parent.prototype){
    Child.prototype[i] = Parent.prototype[i];
}
Child.prototype.show = function(){
    console.log("hello 鉴定师");
}

var p = new Parent("大鉴定师");
p.show();

var c = new Child("实习鉴定师");
c.show();

4、es6classが継承された
クラス継承の原則があるES6を:コンストラクタの引数は継承+にプロトタイプチェーンを継承します

class Parent{
    constructor(s){
        this.skill = s;
    }
    show(){
        console.log(this.skill);
    }
}
//子构造函数继承父构造函数
class Child extends Parent{
    constructor(s){
        super(s);
    }
}
var p = new Parent("大鉴定师");
p.show();
console.log(p);

var c = new Child("实习鉴定师");
c.show();
console.log(c);
リリース3元の記事 ウォンの賞賛1 ビュー68

おすすめ

転載: blog.csdn.net/weixin_46370288/article/details/105028215