zoukankan      html  css  js  c++  java
  • js原型链

        js 原型链,其实就是对象,方法的一些关系,首先要明确一点,对象实例是没有prototype,函数才有prototype

        废话不多说我们一些console一下都是写什么东西

    /* 首先我们创建一个对象 */
    let obj = {}
    /* 上面的和下面是一样的,都是一个空对象 */
    let obj2 = new Object()
    
    console.log(obj.prototype)  // 输出undefined
    /* 证明对象实例确实是没有prototype的 */
    /* 让后我们查看一下obj.__proto__ */
    console.log(obj.__proto__)/* 行吧输出了一对东西无法判断 */
    /* 我们猜测一下 */
    console.log(obj.__proto__===Object.prototype) //输出true
    /* 上面一行 完全等于,证明这是一个东西*/
    /* 那Object.__proto__ 又指向的啥,打印一下 */
    
    console.log(Object.__proto__) // ƒ () { [native code] }
    /* 有点像一个函数 */
    /* 猜测一下 */
    console.log(Object.__proto__ === Function.prototype) //输出true /* 原来指向的是这里 */
    
    /* 那我们继续看一下 Object.prototype.__propo__ 是啥*/
    console.log(Object.prototype.__proto__) //输出 null /* 到null了,证明到头了,没东西了 */
    
    /* 那上面就是对象的一整条原型链了 */
    
    /* 那下面我们看一下函数的 */
    /* 首先看一下构造函数 */
    
    function Person () {
        name: 'cz'
    }
    
    let p1 = new Person()
    
    /* p1是一个对象,根据上面的他只有__proto__ */
    console.log(p1.__proto__) // constructor ƒ Person()
    
    console.log(p1.__proto__ === Person.prototype) //true
    
    /* 下面就是一个正常的函数了 */
    /* Person 就是一个函数 */
    console.log(Person.__proto__) // ƒ () { [native code] }
    /* 上面这个看着有点像,挺像,之前,Object.__proto__ */
    /* 那就不用考虑了 */
    console.log(Person.__proto__ === Function.prototype) //ture
    /* 再看一下 Function.__proto__*/
    console.log(Function.__proto__) //ƒ () { [native code] }  
    /* 然是这样,Funtion的显示原形和隐式原形相等 */
    console.log(Function.__proto__.__proto__) /* 输出,constructor: ƒ Object() 有点意思*/
    /* 上面的不是  Function.__proto__.__proto__ === Function.prototype.__proto__*/
    /* 那最终是不是有道对象上去了 */
    console.log(Function.prototype.__proto__ === Object.prototype) //输出true

      function 最终又到Object,不得不说一切都对象 

      总结一下

        重点重点,实例对象没有prototype,

        最终Object.prototype.__proto__  指向的null

        Function.prototype === Function.__proto__  

        Function.prototype.__proto__ === Object.prototype
        实例对象的__proto__ 只想构造函数的 prototype
        构造函数的__proto__ (构造函数其实是一个对象) 当然具体构造函数名.prototype
        具体构造函数名.__proto__只想 Function.prototype 也等于  Function.__proto__
     
        上面就是一条回路了。现在清晰了吧
        
  • 相关阅读:
    select、poll和epoll
    Linux 常用命令之文件和目录
    SmartPlant Review 帮助文档机翻做培训手册
    SmartPlant Foundation 基础教程 3.4 菜单栏
    SmartPlant Foundation 基础教程 3.3 标题栏
    SmartPlant Foundation 基础教程 3.2 界面布局
    SmartPlant Foundation 基础教程 3.1 DTC登陆界面
    SmartPlant Foundation 基础教程 1.4 SPF架构
    SmartPlant Foundation 基础教程 1.3 SPF其他功能
    SmartPlant Foundation 基础教程 1.2 SPF集成设计功能
  • 原文地址:https://www.cnblogs.com/czkolve/p/10760002.html
Copyright © 2011-2022 走看看