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

  • 相关阅读:
    找出有序数组中绝对值最小的数
    warning:deprecated conversion from string constant to 'char *' 解决方案
    Wordnet 与 Hownet 比较
    心灵鸡汤
    冒泡排序
    .NET加密配置文件connectionStrings节点
    C#基础知识之方法重载总结
    [C#]工具类—FTP上传下载
    C#基础知识-对象初始化顺序
    自定义Dictionary支持线程安全
  • 原文地址:https://www.cnblogs.com/litao229/p/2278342.html
Copyright © 2011-2022 走看看