为了账号安全,请及时绑定邮箱和手机立即绑定

为什么定义Object前后Object.prototype.__proto__会有变化??

为什么定义Object前后Object.prototype.__proto__会有变化??

开心每一天1111 2019-03-14 18:13:34
为什么用 function 定义了就不同?是因为前后两个 Object 不同吗?打印两者的差距就在,前者多了一句: native code。代码图:
查看完整描述

4 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

你可以搜一下那张经典的原型链图,我简单说一下,首先Object.prototype.__proto__ === null,而Object.prototype === Person.prototype.__proto__,而下面你重写了Object函数,也就自然能够log出函数体,在浏览器中,原生的函数toString方法log出的都是native code,这也成为判断一个函数是否为原生函数的重要依据。

查看完整回答
反对 回复 2019-03-19
?
月关宝盒

TA贡献1772条经验 获得超5个赞

我的理解:
Object是内置对象,之后你定义了一个函数是function Object(){}(以fnObj代称);
这两个对象是完全不一样的;
内置Object里有判断是否是实例化new,可以直接自变量var a = {};
Object.prototype是原型链的最顶层的对象;所以 Object.prototype.__proto__ 只能是null;
fnObj是个函数,它和function person(){}是一类的。
他们的prototype.__proto__ 是等于 Ojbect.prototype;
你用Object命名把内置对象覆盖掉,当你new实例化的时候 它将是fnObj实例


查看完整回答
反对 回复 2019-03-19
?
偶然的你

TA贡献1841条经验 获得超3个赞

  1. 前者和后者不同,前者是 window的一个属性 Object;
    后者是定义了一个函数。

  2. 带有 native code说明是原生的方法,里面是二进制码。


查看完整回答
反对 回复 2019-03-19
  • 4 回答
  • 0 关注
  • 790 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信