2010-07-20 3 views
0
<html> 
<head> 
<script> 

function SuperClass() 
{ 
    var self = this; 
    self.someVariable = true; 
} 
function SubClass() 
{ 
    var self = this; 
    self.name = "Sub"; 
} 
SubClass.prototype = SuperClass; 

var sub = new SubClass(); 

alert("This is a sub class with name " + sub.name + " and variable " + sub.someVariable); 

</script> 
</head> 
<body> 
</body> 
</html> 

sortie:Quelqu'un peut-il m'expliquer pourquoi cette inheiritance en javascript ne fonctionne pas?

This is a sub class with name Sub and variable undefined 

Alors comment se fait sous doesnt classe ont somevariable? Je pensais que c'était tout le point du prototypage.

Répondre

2

Vous assignez simplement une référence au constructeur SuperClass au SubClass.prototype, vous devez utiliser l'opérateur new pour faire ce SubClass.prototype objet une instance de SuperClass:

//... 
SubClass.prototype = new SuperClass(); 
//.. 

Vous pouvez restaurer la propriété constructor de l'objet SubClass.prototype après la ligne ci-dessus, car si vous ne le faites pas, les instances créées avec SubClass (comme sub dans votre exemple) auront une propriété héritée constructor pointant incorrectement vers SuperClass:

SubClass.prototype.constructor = SubClass; 

Vérifiez un exemple here.

Articles recommandés:

Questions connexes