zoukankan      html  css  js  c++  java
  • js object 视图猜想

    某天突然想知道 Object 和 Function的关系,在网上找到了这张图,看完后思路清晰了很多,在那图的基础上,我加上了Number,Boolean,String等三个系统提供的类型构造器和Object Function的关系图如上。

    他们中只有 Function的prototype和__proto__是相同的。

    其他的构造器 不无都是 Function 构造出来的对象,也叫是Function的实例是因为Object,Number,Boolean,String 甚至自定义的Foo 的__proto__无不都指向

    Function.prototype 也就是function Empty .

    而Function同时也是自己的构造函数 Function.constructor === Function

    所以,js的对象系统里,可以说 所有的构造函数都是由Function构造而来

    函数里最特别的一个就是 Function.prototype 也就是 Empty

    Function.prototype.hasOwnProperty("prototype") //false

    typeof Function.prototype;//function

    也就是说这是唯一一个没有Prototype的函数

    它是所有构造函数作为对象存在的 原型 Object.__proto__ , Function.__proto__,Number.__proto__ 设置是所有自定义构造函数比如Foo的原型 Foo.__proto__

    而Empty 虽然没有 prototype但是 作为一个对象依然还是有__proto__,也就是 Object.prototype了。于是这就吻合了那句定义。。 Object.prototype是js里所有对象原型链的顶端。。。。。(undefined除外)

    最后有个特例,就是 那么undefined应该放在哪里呢,在这个js object 的关系视图里

    JavaScript Object layout

  • 相关阅读:
    在泛型方法中返回泛型数组
    java泛型方法返回泛型结果
    hive -e和hive -f的区别(转)
    hive表批处理
    python网络编程——实现简单聊天
    python网络编程(转)
    python分布式编程(转)
    shell多线程之进程间通信(3)
    在xml文件中使用该控件
    Java文件中代码
  • 原文地址:https://www.cnblogs.com/litao229/p/2278342.html
Copyright © 2011-2022 走看看