1. インタビューで遭遇した質問ですが、サブクラスは親クラスを継承し、そのメソッドの 1 つをオーバーライドします。継承に関しては、私は間違いなく結合継承を使用します。メソッドはすべてプロトタイプに記述されます。メソッドのオーバーライドは、オブジェクトの 属性 検索に基づいているため、サブクラスのプロトタイプ オブジェクト に直接記述しても問題ありません。プロトタイプチェーン上で、近接性の原理に基づいて、最初に見つかったメソッドが呼び出されます。 2. コードは次のとおりです:
[javascript] view plain copy // supcalss var parent = function(name,age){ this.name = name; this.age = age; } parent.prototype.showProper = function() { console.log(this.name+":"+this.age); } var child = function(name,age){ parent.call(this,name,age); } // inheritance child.prototype = Object.create(parent.prototype); // child.prototype = new parent(); child.prototype.constructor = child;
// rewrite function child.prototype.showProper = function(){ console.log('I am '+this.name+":"+this.age); } var obj = new child('wozien','22'); obj.showProper();
このようにして、サブクラスは親クラスの showProper メソッドをオーバーライドします。このうち、Object.create(proto)
関数は、protoオブジェクトをプロトタイプオブジェクトとしてオブジェクトを作成し、そのオブジェクトを返すものです。 メソッドを見つける順序: obj -> child.prototype ->parent.prototype
3. 注意事項: JS でメソッドの継承と書き換えを実装するとき、またはクラスのメソッドを作成するときは、プロトタイプオブジェクトはプロトタイプであり、他のメソッドの継承方法を考慮する必要はありません。
関連記事:
JSのクラス定義方法の解説JavaScriptの基本構文と変数の解説jsの基本的なメソッドやよく使われるメソッドの解説以上がjs継承におけるメソッド書き換えを説明するためのポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。