原型和原型链

prototype (原型 / 原型对象)

       + 定义: **每一个函数天生自带一个属性叫做 prototype,他是一个对象**

       + 只要函数定义好以后,这个 prototype 就出生了

       + 构造函数也是函数,构造函数也有 prototype,我们可以像里面添加一些内容

       + 这个天生自带的 prototype 里面有一个属性叫做 constructor

        => 表示我是哪一个构造函数伴生的原型对象


__proto__(原型链/连接点)

        + 定义: **每一个对象天生自带一个属性,叫做__proto__,指向所属构造函数的prototype**

        + 实例化对象也是一个对象

        + 实例化对象也有__proto__属性


原型链

对象访问机制

       + 当你访问一个对象的成员的时候,会先在自己身上找

       + 自己没有去到 __proto__ 上找

       + 再没有,再去 __proto__ 上找

       + 一直找到顶级对象的 __proto__ 都没有

       + 就返回 undefined

分析:

        + 定义1:每一个对象都有 __proto__

        + 随便一个实例化对象的 __proto__ 是所属构造函数的 prototype

        + 定义2:每一个函数都有一个 prototype,他是一个对象

        + 每一个构造函数的 prototype 应该也有一个 __proto__,指向了谁?

        + 构造函数也是函数,函数也是一个对象

        + 函数应该也有一个 __proto__,指向了谁?

定义:

        1.每一个函数天生自带一个属性叫做 prototype,是一个对象

        2.每一个对象天生自带一个属性叫做 __proto__ 指向所属构造函数的 prototype

        3.当一个对象没有准确的构造函数来实例化的时候,我们都看做是内置构造函数 Object 的实例

例子:

        1.var arr = [] , Array的实例

        2.var obj = {} , Object的实例

        3.var p1 = new Person() , Person的实例

        4.var time = new Date() , Date的实例

        5.var fn = function (){} , Function的实例

        6.Person.prototype , Object的实例

        7.Array.prototype , Object的实例

结论:

        + 任何一个对象开始触发

        + **按照__proto__开始向上查找**

        + 最终都能找到Object.prototype

        + 我们管这个使用 __proto__ 串联起来的对象链状结构,叫做原型链

        + 原型链作用:为了对象访问机制服务

什么是原型,什么是原型链

+ 原型是每一个函数天生自带的对象空间,他在里面写方法是为了给实例使用的,多个实例共享方法

+ 原型链就是使用原型链 __proto__ 串联起来的对象链状结构,是为了对象访问机制服务的

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值