【问题标题】:Object.getPrototypeOf(o) method issueObject.getPrototypeOf(o) 方法问题
【发布时间】:2014-06-19 09:52:20
【问题描述】:

我很难理解 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]。

【问题讨论】:

    标签: javascript ecmascript-5 prototype-programming


    【解决方案1】:

    这只是使用alert 的一个问题,它将警报对象转换为字符串。 [object Object]{} 的字符串表示:

    ({foo: 'bar'}).toString(); // [object Object]
    

    您应该使用控制台进行测试,它会更好地显示对象(请参阅example on JSFiddle)。

    示例中还有一个新对象obj3,它表明Object.getPrototypeOf()确实返回最近的对象,而不是根原型。

    【讨论】:

    • 太好了,谢谢!你能帮我解决问题的第二部分吗?
    猜你喜欢
    • 1970-01-01
    • 2018-09-28
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2021-04-18
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多