J'utilise la fonction suivante pour créer de nouveaux objets.Pourquoi la fonction init du prototype de cet objet ne sera-t-elle pas exécutée?
function newObj(o) {
var params = Array.prototype.slice.call(arguments,1);
function F() {}
F.prototype = o;
var obj = new F();
if(params.length) {
obj.init.apply(obj,params);
}
return obj;
}
Et cela fonctionne bien la plupart du temps. Cependant un de mes bases « classes » est désormais définie comme héritant d'une autre classe de base
SPZ.EditablePuzzle = function() {
// function and variable definitions
return {
///some methods and properties
}
}();
SPZ.EditablePuzzle.prototype = SPZ.Puzzle;
Maintenant, quand j'utilise newobj() pour créer une nouvelle SPZ.EditablePuzzle la fonction d'initialisation n'est pas définie, même si elle est définie dans SPZ.Puzzle et moi nous assurons que EditablePuzzle fonctionne après Puzzle
Pourquoi ma fonction newObj ne trouve-t-elle pas la fonction init? Ne devrait-il pas automatiquement regarder dans le prototype dès qu'il ne parvient pas à le trouver dans l'objet lui-même?
Apparaît liek c'est tout. À votre santé – wheresrhys