Javascriptで継承を理解しようとしていますが、このコード(Firebugでテスト済み)は期待通りの動作をしません。私はそれについて何を理解していないのですか?私は期待してい何コンストラクタの継承。私はここにいないのですか?
var A = function(v){
this.v = v || 'foo';
}
A.prototype.shout = function(){ alert(this.v); }
var B = function(){};
B.prototype = new A;
var test = new B('bar')
test.shout() // returns 'foo'
は私がtest
プロパティthis.v
を割り当てるときには、「バー」に設定されていることです。私の知る限り、JSプロトタイプの継承設定B
のプロトタイプA
は、B
のすべてが上書きされることを意味します。私はそれがコンストラクタが上書きされることを期待し、new B('bar')
を呼び出すと、A
のコンストラクタがパラメータ "bar"で実行されます。
私の理解が間違っている場合は、誰かが私を修正してください。また、私が何をしているよ何の解決策を見つけるために良いでしょう:私は作成していJSオブジェクトは、標準的なOOPに似た遺伝パターンに従うように...
// constructors from above
B.prototype.yell = function(){ alert('hello world'); }
var test1 = new B('bar'), test2 = new B('spam'), test3 = new B('eggs');
を、したがって、B
を継承しますA
のコンストラクタとメソッド。
編集:
のコメントを読んだ後、私はより良い質問は1 s「をA
でのコンストラクタ」はB
を上書きする方法を尋ねることであろうと考えていますか?
期待どおりに動作しないのはなぜですか?あなたは何を期待していますか? –