[Javascript]プロトタイプチェーン


継承について...
まず、オブジェクト向けの概念상속を見てみましょう.상속は、あるクラスまたはオブジェクトのProperty/メソッドが別のオブジェクトによって継承され、新しいクラス/オブジェクトが自分のように使用されることを示すオブジェクト向けのプログラミング用語です.상속から継承されたクラスを부모 클래스, 슈퍼 클래스, 베이스 클래스, 상위 클래스、そこから継承されたクラスを자식 클래스, 서브 클래스, 파생 클래스, 하위 클래스と呼ぶ.これからは親子レベルを使います
今はまだ継承がどんな感じなのか分かりませんか?例を挙げる.
スマートフォンと公衆電話には電話の共通点がある.スマートフォンと公衆電話の2つのオブジェクトを作成すると、同じダイヤル、電話に出る共通の動作(メソッド)があり、同じ動作(メソッド)を2つのオブジェクトに含めると、同じコードが2回使用され、コードが長すぎ、作成効率が低下します.したがって、ダイヤルアップと受信方法を含む電話クラスを定義し、スマートフォンと公衆電話に継承する場合は、同じダイヤルアップと受信方法を2つのオブジェクトにそれぞれ宣言する必要はありません.このとき,電話類は親類,スマートフォン/公衆電話類は子類である.
これにより、作成効率とコード分離が向上し、メンテナンスが容易になります.
サブクラスは、親から受信した構成およびメソッドを上書き(再定義)することもできます.오버라이딩は、Property/メソッドの名前を保持し、機能のみを変更することを意味します.
次に、JavaScriptの概念、すなわちプロトコルチェーンについて議論し続けましょう.
プロトタイプチェーン
JavaScriptはプロトコルベースの言語であるため,厳密には継承概念は存在しない.しかし、프로토타입 체인の継承に似た概念がある.
let Phone = function () {};	//부모 클래스 Phone과 생성자

Phone.prototype.getCall = function () { //Phone 프로토타입 메소드 정의
    return '전화 받기';
}

let SmartPhone = function () {  //자식 클래스 SmartPhone
    Phone.call(this);	//Phone클래스 생성자를 자식 클래스에서 호출
}

SmartPhone.prototype = new Phone();	//프로토타입 체인

let smartPhone = new SmartPhone();	//전화기 클래스를 상속받은 스마트폰 객체 생성

console.log(smartPhone.getCall());

私はコードを1行1行分解した.
まず、Phoneというプロトタイプを作成し、getCallという方法を追加しました.
次のサブクラスとしてSmartPhoneプロトコルタイプを作成します.親になるPhoneの作成者をcallメソッドで呼び出します.
その後、prototypeプロトコルによってPhoneプロトコルとチェーンがサブクラスに掛けられる.
最後に、スマートPhoneオブジェクトを作成してgetCallを行い、スマートPhoneオブジェクトの親にリンクされたgetCallメソッドが正常に動作するようにします.このメソッドはスマートPhoneオブジェクトではありません.
これは프로토타입 체인です.オブジェクト向け言語はextendsキーワードで簡単に継承されますが、프로토타입 체인は複雑に見えます.でも颜よりすぐに惯れるから心配ない
メンバーの追加と上書き
では프로토타입 체인にメンバーを追加してoverridingを行いましょう
let Phone = function () {
};

Phone.prototype.getCall = function () {
    return '전화 받기';
}

let SmartPhone = function () {
    Phone.call(this);
}

SmartPhone.prototype = new Phone();
SmartPhone.prototype.getCall = function () {	//getCall() 메소드 오버라이딩
    return '스마트폰 전화 받기';
};
SmartPhone.prototype.playMusic = function () {	//메소드 추가
  return '음악 재생';
};

let smartPhone = new SmartPhone();

console.log(smartPhone.getCall());
console.log(smartPhone.playMusic());