zoukankan      html  css  js  c++  java
  • 原型链(_proto_) 与原型(prototype) 有啥关系?

    prototype对象里面方法及属性是共享的。。。。。。 

    1.JavaScript 中每一个对象都拥有原型链(__proto__)指向其构造函数的原型( prototype),object._proto_是个例外!

    2.JavaScript 中每一个函数都拥有原型( prototype ),原型也是一个对象,这个对象包括:原型链、原型方法(属性)、函数构造,同理它的原型链指向其构造函数的原型。

    3.当访问一个对象或者函数上的属性时,先尝试访问自身上的属性,再通过原型链尝试访问其创造构造函数那个原型上的属性。如果没有则通过原型上的原型链,继续向上查找,直到访问 Object.prototype 上的属性,如果还是没有,因为 Object.prototype 是一个没有 __proto__ 的对象,Object._proto_指向null,则查询到此为止,返回 undefined。

     Object顶级!!!

    1.原型对象(例如:a)的__proto__指向它的构造函数的原型对象(object.prototype)。

    2、原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。>>>>(son.prototype.constructor) === Person()    //true

     注意:object.prototype是被object new出来的实例函数a的原型,object.prototype中的prototype是object的属性!!!

    var a = {};

    a._proto_  ===  object.prototype              //true

    object.prototype._proto_                           //underfined   ,最终指向null;  _proto_实例化才产生!!Object.prototype 是一个没有 __proto__ 的对象!!

    function Person() {};

    Person._proto_  ==== Function.prototype         //true

    var son = new Person();

    son._proto_   ===  Person.prototype;                //true                       _proto_指向创建实例化的对象原型。

    Person.prototype.smile = function() {};         >>>>>>>>>>> ["constactor":"smile"]

    .......................................................................................................................................................................

    subA.prototype = new superA() // 继承方法

    var a1 = new subA('xiaomuchen')

    /*当实例化 a1 时,a1.__proto__ => subA.prototype => new superA() => superA.prototype,所以 a1 的构造函数是 superA*/

    Function.prototype.__proto__===Object.prototype;       //true;

     

                                                    _proto_关系图

    友情链接:https://www.v2ex.com/t/403680

  • 相关阅读:
    搭建Elasticsearch 5.4分布式集群
    Elasticsearch中Head插件的使用
    Elasticsearch6.0及其head插件安装
    elasticsearch 6.2.3安装ik分词
    linux安装elasticsearch
    [Elasticsearch] 多字段搜索 (三)
    [Elasticsearch] 全文搜索 (一)
    [Elasticsearch] 多字段搜索 (二)
    elasticsearch this is not a http port
    基于visual Studio2013解决C语言竞赛题之0704字符串长度
  • 原文地址:https://www.cnblogs.com/Longhua-0/p/9280418.html
Copyright © 2011-2022 走看看