私はjavascriptプログラミングの初心者です。最近、私はJavaScriptの旅で私を混乱させる問題に遭遇します。 Person()コンストラクタからすべてのメンバーを継承するTeacher()コンストラクタを作成したいと思います。1つのコンストラクタのプロトタイププロパティを元のプロトタイププロパティに継承させるにはどうすればよいですか?
まず、私は第二
function Person(name) {
this.name = name;
};
Person.prototype.greeting = function() {
alert('Hi! I\'m ' + this.name + '.');
};
を以下のように私は)人(から教師を()の作成)(人を作成します。ここで
function Teacher(name){
Person.call(this,name);
};
が問題です:私は先生()のプロトタイプを設定しようとすると
、それは次の二つの慣行が同じように見えることを私に混乱しました。しかし、彼らはいくつかの違いを持っている必要があります、と思います。 私が最初に次のように書いている:
Teacher.prototype = Object.create(Person.prototype);
を私は上記のように書いた後、私はTeacher.prototypeが間違っていることが証明Person.prototype、に等しいことだと思う:
Teacher.prototype === Person.prototype;//=>false
しかし、teacherAを、教師のインスタンスは()、成功した)(人から挨拶メソッドを継承します
var teacherA = new Teacher();
teacherA.name = 'Kyle';
teacherA.greeting();//=>Hi!I'm Kyle.
その後、私は先生()のプロトタイププロパティEQUを作っている、次のように私のコードを変更しようとしました人()のprototypeプロパティにアル:確かに
Teacher.prototype = Person.prototype;
Teacher.prototype === Person.prototype;//=>true
、teacherB、教師の別のインスタンスは、()、同様)(人から挨拶メソッドを継承します
var teacherB = new Teacher();
teacherB.name = 'Jane';
teacherB.greeting();//=>Hi!I'm Jane.
誰もがなぜ私に言うことができますこれらの2つのプラクティスはどちらも正常に継承されましたが、2つの状況のうちの1つでは、Teacher.prototypeはPerson.prototypeと等しくなく、別の状況では逆です。ありがとう!
あなたの答えは本当に有益です。私が学ぶときにこれを念頭に置いておくことは、私が確かに継承をよりよく理解できるようにするでしょう。どうもありがとうございます。 –
あなたが書いたときに言及する価値があるかもしれません: –