js原型继承

function对象结构(Persion)
    Persion{
        eat:f()
        __proto__:Object{
           constructor:
        }
 }
_proto__ 属性,它是对象所独有的
__proto__属性都是由一个对象指向一个对象,即指向它们的原型对象
它的作用就是当访问一个对象的属性时,如果该对象内部不存在这个属性,
那么就会去它的__proto__属性所指向的那个对象里找,如果父对象也不存在这个属性,
则继续往父对象的__proto__属性所指向的那个对象里找,如果还没找到,
则继续往上找…直到原型链顶端null,此时若还没找到,则返回undefined
prototype属性 它是函数所独有的,它是从一个函数指向一个对象。它的含义是函数的原型对象,
也就是这个函数(其实所有函数都可以作为构造函数)所创建的实例的原型对象
prototype属性 作用就是包含可以由特定类型的所有实例共享的属性和方法,
也就是让该函数所实例化的对象们都可以找到公用的属性和方法。任何函数在创建的时候,
其实会默认同时创建该函数的prototype对象

p.proto=== Persion.prototype,它们两个完全一样

创新互联公司主要从事做网站、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务和顺,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

总结:
1、我们需要牢记两点:①__proto__和constructor属性是对象所独有的;
  ② prototype属性是函数所独有的,因为函数也是一种对象,所以函数也拥有__proto__和constructor属性。

 2、__proto__属性的作用就是当访问一个对象的属性时,如果该对象内部不存在这个属性,
    那么就会去它的__proto__属性所指向的那个对象(父对象)里找,一直找,直到__proto__属性的终点null,
    然后返回undefined,通过__proto__属性将对象连接起来的这条链路即我们所谓的原型链。

 3、prototype属性的作用就是让该函数所实例化的对象们都可以找到公用的属性和方法,
    即p.__proto__ === Persion.prototype。

 4、constructor属性的含义就是指向该对象的构造函数,所有函数(此时看成对象了)最终的构造函数都指向Function
 代码:
 //function继承
function inherits(Child, Parent) {
    var F = function() { };
    F.prototype = Parent.prototype;
    Child.prototype = new F();//修改子类prototype指向
    //任何一个prototype对象都有一个constructor属性,指向它的构造函数
    //由于修改了child prototype为F则对应的constructor会指向F的prototype的constructor(也就指向了Parent的构造函数了),
    //所以要对应设置一个prototype的contructor
    Child.prototype.constructor = Child;
    Child.super = Parent.prototype;//设置super属性,方便调用父类的prototype方法
}

网站栏目:js原型继承
转载注明:http://bzwzjz.com/article/pogidp.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站制作 成都网站建设 响应式网站设计 成都网站设计 网站制作 重庆网站制作 成都定制网站建设 四川成都网站设计 成都网站建设推广 成都品牌网站建设 网站建设改版 网站制作公司 高端网站建设 手机网站制作 上市集团网站建设 成都网站建设公司 网站设计制作报价 营销型网站建设 app网站建设 营销网站建设 成都网站设计 成都网站制作