原型和原型链(图形理解)

1.概念:

函数对象---就是平时称呼的函数

原型对象---所有的函数对象都一定有一个对应的原型对象, 所有的原型对象都是被Object函数对象创建出来的。

实例对象---new 出的对象或{ }

画出以下构造函数的图形:

function Show(id,name) {
  this.id = id;
  this.name = name;
}

var p = new Show(1,'小蜜蜂');

1.源头:Function函数对象自动产生的第一个对象

2.除Function函数对象之外,所有的函数对象都是由Function函数对象创建的。

3.Function自动创建的第一个函数对象是Object函数对象;

   同时也会自动创建出很多函数对象出来,包括我们自己写的函数对象。

以上四点即可画出我们的函数对象:

 

4.所有的函数对象都一定有一个对应的原型对象, 所有的原型对象都是被Object函数对象创建出来的。

如下图所示:

 

5.所有的函数对象中都有一个名字叫prototype的引用类型变量,该引用类型变量是函数对象的成员

    该引用类型变量的值是对应的原型对象的引用值,即prototype指向原型对象。

如下图所示:

 

6. 所有的原型对象中都有一个名为constructor引用类型变量,该引用类型变量是原型对象的成员,

   该引用类型变量的值是对应的函数对象的引用值,即constructor指向函数对象。

 

7.实例对象是被对应的函数对象创建的。

 

8.所有对象中都有一个名为__proto__引用类型变量,该引用类型变量是对象的成员.

    对象中的__proto__的值是哪个对象的引用值?即指向哪个对象?分三种情况:

(1)Function函数对象中__proto__指向Function原型对象。
(2)Object原型对象中__proto__值为null
(3)除Function函数对象和Object原型对象之外。

对象中的__proto__指向---------------->谁创建了__protot__所属的对象,就指向谁的原型。 

如下图所示:

 

9.对象访问成员的过程:

   (1)当前对象中如果有该成员就该到该成员,访问结束。
   (2)当前对象中如果没有该成员,则到__proto__指向的对象中找成员,找到就结束。
        如果还是没有找到,又通过__proto__指向的对象中去找。

10.一个对象中如果有prototype,则该对象一定是函数对象,如果对象为函数对象,则其中一定有prototype。
    一个对象中如果有constructor,则该对象一定是原型对象,如果对象为原型对象,则其中一定有constructor。

11.总结:

(1)所有的原型对象都是由Object函数对象创建的。

(2)new 出的对象是由函数对象创建的。

(3)所有的对象中都自带属性__proto__,  __proto__指向一个对象.

(4)Object原型对象中__proto__特殊,它的值为null.
(5)Function函数对象中__proto__特殊,它指向Function原型对象。

(6)所有的函数对象中都有prototype属性,原型对象和new 出来的对象中没有。

(7)prototype总是指向对应的原型对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白柏�

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值