• 小测试来检验一下你原型链理解的怎么样。


     var Person = function(name){
        this.name = name; 
      };
      Person.prototype.getName = function(){
        return this.name; 
      }
      var person1 = new person('Mick');
      person1.getName();

    提问:

    person1.__proto__ 是什么?

    ​Person.__proto__ 是什么?
    Person.prototype.__proto__ 是什么?
    Object.__proto__ 是什么?
    Object.prototype__proto__ 是什么?

    答案:
    第一题:
    因为 person1.__proto__ === person1 的构造函数.prototype
    因为 person1的构造函数 === Person
    所以 person1.__proto__ === Person.prototype

    第二题:
    因为 Person.__proto__ === Person的构造函数.prototype
    因为 Person的构造函数 === Function
    所以 Person.__proto__ === Function.prototype

    第三题:
    Person.prototype 是一个普通对象,我们无需关注它有哪些属性,只要记住它是一个普通对象。
    因为一个普通对象的构造函数 === Object
    所以 Person.prototype.__proto__ === Object.prototype

    第四题,参照第二题,因为 Person 和 Object 一样都是构造函数

    第五题:
    Object.prototype 对象也有proto属性,但它比较特殊,为 null 。因为 null 处于原型链的顶端,这个只能记住。
    Object.prototype.__proto__ === null

     

     JS 在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__ 的内置属性,用于指向创建它的构造函数的原型对象。

    对象 person1 有一个 __proto__属性,创建它的构造函数是 Person,构造函数的原型对象是 Person.prototype ,所以:
    person1.__proto__ == Person.prototype

     所有函数对象的__proto__都指向Function.prototype,它是一个空函数(Empty function);


    引用了下面的内容:

    作者:Yi罐可乐
    链接:http://www.jianshu.com/p/652991a67186
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
     
     
    好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。
  • 相关阅读:
    linux 用户与用户组
    linux 用户管理、权限管理
    linux服务与进程
    linux 磁盘阵列
    linux 文件系统 磁盘分区 格式化
    linux shell基础
    Linux网络设置
    DNS域名服务器配置
    Arduino 各种模块篇 摇杆模块
    Arduino 不同Arduino衍生板子的问题
  • 原文地址:https://www.cnblogs.com/wangxi01/p/7872563.html
Copyright © 2020-2023  润新知