edit - Этот ответ с 2010 года и довольно устарел. С тех пор в язык добавлен API Object.getPrototypeOf()
, что значительно упрощает процесс.
Вы можете использовать свойство «конструктор» объекта, чтобы найти там прототип, а затем цепляться вдоль него, пока не достигнете конца радуги.
function getPrototypes(o) {
return (function gp(o, protos) {
var c = o.constructor;
if (c.prototype) {
protos.push(c.prototype);
return gp(c.prototype, protos);
}
return protos;
})(o, []);
}
(может быть) (а может и нет :-) дайте мне секунду) (ну дерьмо; я думаю, что это возможно, но игнорируйте этот код)
[править] Вау, это просто поражает меня - эта функция близка, но не совсем правильна; Создание цепочки прототипов странно, и я чувствую себя напуганным и одиноким. Предлагаю обратить внимание только на потрясающую @CMS выше.