Salut !
Je ne sais pas vraiment s'il s'agit d'un bug ou s'il s'agit d'une fonctionnalité volontairement bloquée.
Disons que j'ai un objet Toto qui hérite d'un objet HTMLDivElement. Une instance de Toto devient alors également l'objet HTMLDivElement hérité et est reconnu comme tel.
Le blocage intervient lorsqu'on essayes d'accéder aux propriétés et méthodes DOM de l'objet ("Invalid this pointer used as target for method call" ) ou qu'on essayes d'insérer le nœud dans l'arbre ("DOMException: HIERARCHY_REQUEST_ERR (3)" ).
Code :
- //on crée le prototype de notre objet
- var Toto=function(){
- this.appendChild(document.createTextNode('toto')); //on ajoute le texte "toto" à notre div -> erreur "Invalid this pointer used as target for method call"
- }
- Toto.prototype=document.createElement('div'); //Toto hérite d'un div
- var toto=new Toto(); //on instancie Toto qui devrait normalement être un div
- alert('toto instanceof HTMLDivElement : '+(toto instanceof HTMLDivElement)); //on vérifie que l'instance est bien un div
- document.body.appendChild(toto); //on ajoute notre div au body -> erreur "DOMException: HIERARCHY_REQUEST_ERR (3)"
|
Le problème, c'est que je ne comprend pas pourquoi ces erreurs sont envoyées alors que le code me parait tout ce qu'il y a de plus valide (il fonctionne d'ailleur très bien sous FF et Chrome, Opera et Safari ne gérant pas l'héritage par prototype)
---------------
Je pense donc tu suis. Crois moi, je suis zététicien.