これは私の最初の質問ですので、正しく処理していない可能性があります。私はJSとノードJSを学ぼうとしています。私はutil.inherits関数に苦労しています。コンストラクタがスーパーコンストラクタのメソッドを継承しないのはなぜですか?
util.inherits
関数を使用しても、ヒューマンコンストラクタのプロパティとメソッドが男性のインスタンスで使用できない理由を理解できないようです。 james instance of Human
が本当に戻ってくるので、確かにjames
オブジェクトはHuman
メソッドにアクセスする必要があります。
私は、util.inherits
の使用は現在はお勧めできませんが、私の理解を深めてくれない理由を理解したいと思います。
var util = require('util');
function Human(){
this.firstName = 'James';
this.secondName = 'Michael';
this.age = 8;
this.humanFunction = function(){
console.log('I am a human');
}
}
function Male(){
this.gender = 'male';
this.power = 5;
this.who = function(){
return 'I am Male';
};
}
util.inherits(Male, Human)
let james = new Male();
console.log(james instanceof Human); //true
console.log(james.firstName); //undefined
james.humanFunction(); //james.humanFunction is not a function
質問:なぜ自動的にこれを行うことができるJavaScriptクラスを使用するのではなく、「util」というパッケージを使用していますか? –
'Male'コンストラクタの最初の行に' Human.call(this); 'を追加します。 – 4castle
@ Mike'Pomax'Kamermans私はクラスを知っていて、彼らがすでにこの機能を行っていることを知っています。ここで私の理解に間違いがあるかどうかだけを尋ねるだけで、クラスを使ってこれを行うことができたとしても、それがutil.inheritsを使用していない理由を理解したいと思います。 –