为什么getPrototype方法调用会导致错误?

时间:2013-10-09 00:43:15

标签: javascript prototype

如果每个对象最终都从最高级别的Object继承而且最高级别的Object具有getPrototypeOf()函数/方法,为什么以下代码会产生错误?

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

错误:对象不支持属性或方法'getPrototypeOf'

当我查看IE10(F12开发人员工具)的Locals选项卡时,它说obj有一个原型,那个原型有方法,其中一个是isPrototypeOf。

这是我完整的HTML:

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

请注意:我特别问为什么它在obj的原型下显示为一种方法,但却产生错误(如果它只是一个Object的方法,而不是继承的原型)?我会发布它的截图,但由于我是新手,我的声誉太低了。

3 个答案:

答案 0 :(得分:2)

getPrototypeOf位于Object对象上,而不是对象的实例,请尝试

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

答案 1 :(得分:0)

这是因为getPrototypeOf不是所有对象的方法,它是... Object对象上的方法。使用Object.getPrototypeOf(obj)

答案 2 :(得分:0)

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