var f = function();
var instance = new f();
Si vous connaissez le nom de instance
fonction de classe vous pouvez simplement accéder au prototype en tant que :
var prototype = f.prototype;
prototype.someMember = someValue;
Si vous ne le faites pas :
1)
var prototype = Object.getPrototypeOf(instance);
prototype.someMember = someValue;
2) ou
var prototype = instance.__proto__;
prototype.someMember = someValue;
3) ou
var prototype = instance.constructor.prototype; // works only if constructor is properly assigned and not modified
prototype.someMember = someValue;
Pour des raisons de compatibilité, vous pouvez placer dans votre code le snippet suivant (et utiliser toujours Object.getPrototypeOf(instance)
pour retourner le prototype) :
if(!Object.getPrototypeOf) {
if(({}).__proto__ === Object.prototype && ([]).__proto__ === Array.prototype) {
Object.getPrototypeOf = function getPrototypeOf(object) {
return object.__proto__;
};
} else {
Object.getPrototypeOf = function getPrototypeOf(object) {
// May break if the constructor has been changed or removed
return object.constructor ? object.constructor.prototype : void 0;
};
}
}
UPDATE :
Selon l'ECMA-262 6ème édition (juin 2015) __proto__
est normalisée en tant que fonctionnalité supplémentaire pour les navigateurs Web. Toutes les dernières éditions des principaux navigateurs la supportent désormais. Plus d'informations sur __proto__
: