zoukankan      html  css  js  c++  java
  • 小测试来检验一下你原型链理解的怎么样。

     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
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
     
     
    好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。
  • 相关阅读:
    常用图书下载
    模式另类说明
    windows进程中的内存结构
    Windows API学习手记
    20060318工作记录
    X3全局变量及公共函数所在的命名空间说明
    PHP 后台定时循环刷新某个页面 屏蔽apache意外停止
    php随机生成指定长度的字符串 可以固定数字 字母 混合
    以div代替frameset,用css实现仿框架布局
    核中汇编写的字符串函数代码分析
  • 原文地址:https://www.cnblogs.com/wangxi01/p/7872563.html
Copyright © 2011-2022 走看看