Vous essayez de réaliser deux choses séparées ici.
Première:
var b=Object.create(a.prototype);
Je suppose que vous essayez d'étendre a
classe b. Envisager de modifier directement le prototype b après vous l'avez créé:
//Create b class
var b = function(){this.key = 2};
//Extends a in b
var b.prototype = new a();
Deuxième:
b.prototype.c1=function(){console.log("function of b");};
b.c1();
Vous essayez d'appeler votre fonction de votre classe avec b.c1();
. Essayez de instancier d'abord dans une autre variable var bObject = new b();
puis appeler la fonction assignée à te prototype: bObject.c1()
Votre code global devrait ressembler à ceci:
//Create a class here
var a=function(){this.k="yes";};
//assign b1 function to a class
a.prototype.b1=function(){console.log("function of a");};
//Create b class
var b = function(){this.key = 2};
//extends a in b
b.prototype = new a();
//create c1 function in b class
b.prototype.c1=function(){console.log("function of b");};
//create bObj from b class
var bObj = new b();
//call c1 function defined in b class
bObj.c1();
//can also call b1 function from a class
bObj.b1();
est-ce l'erreur que vous obtenez? parce que je reçois ce prototype n'existe pas (sur 'b') aussi, vous ne pouvez pas faire' var bObj = new b() ', car b n'est pas un constructeur. – atmd
@atmd yep, sry, n'a pas remarqué que b n'est pas un constructeur. – fuyushimoya
Vous oubliez l'étape où 'b' est une fonction qui crée des instances et a un' .prototype' ... – Bergi