2012-04-06 6 views
1
var animal = {eats:true}; 
var rabbit = {jumps:true}; 

rabbit.prototype = animal; 

document.write(rabbit.eats); 

継承されたオブジェクトのメソッドにアクセスしようとしていたとき、私は未定義取得していますが、これは未定義として答えを与える、むしろそれは本当でなければなりません。私はIE9、私が原型継承をしようとしています

でそれをやっている

答えて

2

prototypeは、クラスを定義する必要があるとprototypeを使用して継承を設定し、クラスではなく、JavaScriptでのオブジェクトに定義された参照オブジェクトです:

var animal = {eats:true}; 
function Rabit(){}; 
Rabit.prototype = animal; 
Rabit.prototype.jumps = true; 

var rabit = new Rabit(); 
rabit.jumps; // true 
rabit.eats; // true 

それとも、より良いあなたが定義した場合クラスと両方のエンティティ:

function Animal(){}; 
Animal.prototype.eats = true; 

function Rabit(){}; 
Rabit.prototype = new Animal(); 
Rabit.prototype.jumps = true; 

var rabit = new Rabit(); 
rabit.jumps; // true 
rabit.eats; // true 

のGeckoブラウザで文書化されていない__proto__オブジェクトはlatesあなたはプロトタイプチェーンをだます静的オブジェを継承することを、Googleのクロムのような、あります他からのct:

var animal = {eats:true}; 
var rabbit = {jumps:true}; 

rabbit.__proto__ = animal; 
rabit.jumps; // true 
rabit.eats; // true 
+0

ちょっとありがとうございます。:)\ –

+0

あなたの質問に対する回答であれば、答えをマークしてください –

関連する問題