2013-10-09 2 views
1

Если каждый объект наследуется в конечном итоге от объекта самого высокого уровня, а объект самого высокого уровня имеет функцию/метод getPrototypeOf(), почему следующий код вызывает ошибку?Почему метод getPrototype вызывает ошибку?

obj = {}; 
proto = obj.getPrototypeOf(obj); 

Ошибка: Объект не поддерживает свойство или метод «getPrototypeOf»

Когда я смотрю в (инструменты разработчика F12) IE10 по вкладке Локальные, он говорит, что OBJ имеет прототип, и что прототип имеет методы, один из которых isPrototypeOf.

Вот мой полный HTML:

<!DOCTYPE html> 
<html> 
<head> 
<script> 
obj = {}; 
proto = obj.getPrototypeOf(obj); 
</script> 
</head> 
<body> 
</body> 
</html> 

Пожалуйста, обратите внимание: Я специально спрашивать, почему он показывает как метод под прототипом для OBJ, но выдает ошибку (если это предположить, чтобы быть только метод объекта, но не унаследованный прототип)? Я бы опубликовал снимок экрана, но моя репутация слишком низкая, так как я новичок.

+0

Проверьте документацию: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf – epascarello

+0

я сделал. Это не помогает мне в этом вопросе. (или я этого не вижу) – esnm

+0

Вы сказали 'isPrototypeOf'? Versus 'getPrototypeOf'? – bfavaretto

ответ

2

getPrototypeOf находится на Object объекта, а не на экземплярах объекта, попробуйте

obj = {}; 
proto = Object.getPrototypeOf(obj); 
+0

, но тогда почему метод появляется в списке под прототипом для obj? – esnm

+0

Где это происходит? – Musa

+0

Экран разработчика IE10 F12 на вкладке «Сценарий», а затем вкладка «Местные жители» (когда я расширяю знак «+» для объекта obj). – esnm

0

Это потому, что getPrototypeOf не метод на все объекты, это метод на ... Object объекте. Используйте Object.getPrototypeOf(obj).

0

попробовать

obj = {}; 
proto = Object.getPrototypeOf(obj) 
Смежные вопросы