【问题标题】:why isn't Object.prototype === to myNewObj.prototype?为什么 Object.prototype === 不是 myNewObj.prototype?
【发布时间】:2012-12-06 23:21:00
【问题描述】:

所以如果你看看这个小提琴http://jsfiddle.net/r0k3t/z8f2N/1/ 你可以看到

var me = { fName: "ken", lName: "n" };

console.log(Object.prototype === Object.getPrototypeOf(me));

返回真。为什么没有

console.log(Object.prototype === me.prototype);

鉴于我将“我”对象创建为对象字面量,它的原型应该是 Object.prototype 并且第一行似乎证实了这一点。

【问题讨论】:

    标签: javascript prototype-programming


    【解决方案1】:
    Object.prototype === me.constructor.prototype; // true
    

    我现在让你猜猜getPrototypeOf 是如何工作的 :-)

    此外,非标准但几乎无处不在的解决方案(感谢 jAndy):

    Object.prototype === me.__proto__; // true
    

    【讨论】:

    • +1 - 你的答案的一个很好的补充是:console.log(Object.prototype === me.__proto__); (这将被 ES6 标准化
    • 哦,达尼特!我也知道(很好看)。我希望我能在第一时间吸收所有内容并记住所有内容。
    • 等等 - 为什么 Yehuda Katz 在他的博客 (yehudakatz.com/2011/08/12/…) 的“对象文字”部分下说 - “对象文字总是将新创建的对象的原型设置为位于 Object.原型”,然后查看图像。你能怪我糊涂吗?耶!
    • 好吧,在内部,浏览器使用__proto__。这是非标准的,但这就是它的工作方式......所以是的。虽然使用prototype 属性,但父级的原型位于constructor
    猜你喜欢
    • 2014-12-07
    • 2015-01-13
    • 2013-08-23
    • 1970-01-01
    • 2019-08-26
    • 2010-11-12
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多