原型和原型链

原型

   每一个对象上都有一个属性叫做__Proto__,它叫做隐式原型。
   每一个构造器(函数)上面都有一个属性prototype,它叫原型,是一个对象;

原型链

 它是一个对象属性的查找机制;先在自己的私有属性中寻找,如果找不到就沿着__Proto__去它的原型对象中寻找如果还找不到,就继续沿着__Proto__去它的原型对象中的原型对象中去寻找,直到找到object中的原型对象中为止。
 (object原型对象中的__Proto__指向了null,如果还找不到,就是und。

特点

 js中继承都是通过原型对象实现的;
 原型对象:集中存储同一类型的所有子对象,共用成员的父对象;
  1. 每创建一个构造函数,都附赠一个原型对象
  2. 继承:在创建子对象时,new的第二步自动设置子对象继承构造函数的原型对象;
  3. 访问成员:优先访问私有成员;自己没有就去父对象中查找,将成员添加原型对象中

私有属性和公有属性

 私有属性:保存在当前对象本地,仅归当前对象独有的属性
 公有属性:保存在父对象中,所有子对象共有的属性
 读取属性值:子对象.属性
 修改属性值:私有属性,必须通过子对象修改;公有属性只能用原型对象修改!

原型链的运行机制

  1. 所有的函数数据类型都天生自带一个属性:prototype(原型),这个属性值的值是一个对象,浏览器会默认给它开辟一个堆内存
  2. 在浏览器给prototype开辟的堆内存中有一个天生自带的属性:constructor,这个属性存储的值是当前函数本身
  3. 每一个对象都有一个__Proto__的属性,这个属性只想当前实例所属类的
    Prototype(如果不能确定它是谁的实例,都是Object的实例)。

原型链的问题

  1. 包含引用类型值得原型属性会被所有实例共享
  2. 在创建子类型时,无法向超类型的构造函数中传递参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值