var f = function();
var instance = new f();
Если вам известно имя instance
функции класса , вы можете просто получить доступ к прототипу как:
var prototype = f.prototype;
prototype.someMember = someValue;
Если вы не знаете:
1)
var prototype = Object.getPrototypeOf(instance);
prototype.someMember = someValue;
2) или
var prototype = instance.__proto__;
prototype.someMember = someValue;
3) или
var prototype = instance.constructor.prototype; // works only if constructor is properly assigned and not modified
prototype.someMember = someValue;
Для совместимости вы можете поместить в свой код следующий фрагмент (и всегда использовать Object.getPrototypeOf(instance)
для возврата прототипа):
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;
};
}
}
ОБНОВЛЕНИЕ:
Согласно ECMA-262 6th Edition (июнь 2015 г.) свойство __proto__
стандартизировано как дополнительная функция для веб-браузеров.Все последние выпуски лучших браузеров поддерживают это сейчас.Подробнее о __proto__
: