我很难理解Object.getPrototypeOf(o)。我在下面的代码中使用该方法。
var obj0 = {x: 10};
var obj1 = Object.create(null, {
'name': {value: 'first object name', enumerable: false},
});
var obj2 = Object.create(obj1, {
'location': {value: 'second object location'},
});
alert(Object.getPrototypeOf(obj0)); // [object Object]
alert(Object.getPrototypeOf(obj1)); // null
alert(Object.getPrototypeOf(obj2)); // TypeError: Cannot convert object to primitive value
我很感激任何提示:
1 /为什么object2返回TypeError?
2 / Object.getPrototypeOf方法始终返回[object Object]作为"最高对象"在原型链?我认为它会给我它最近的"链中的对象如此。如果有obj3将obj0作为原型,它会给我[obj0 Object]而不是[object Object]。
答案 0 :(得分:1)
这只是使用alert
的问题,它将警报对象转换为String。 [object Object]
是{}
的字符串表示形式:
({foo: 'bar'}).toString(); // [object Object]
您应该使用控制台进行测试,这将显示对象的更好表示(请参阅example on JSFiddle)。
此示例中还有一个新对象obj3
,它显示Object.getPrototypeOf()
返回最近的对象,而不是根原型。