原型链面试回答

什么是原型链

一个对象有原型对象,它的原型对象也有自己的原型对象,一直往上找,找到Object对象,Object对象的的原型对象是null,在往上就没了。这个像链式一样的结构称为原型链。其本质描述的是对象的一种继承关系。就是说一个对象是怎么来的,是继承自它的原型对象。所以说绝大多数对象,其实都是继承自Object这个构造函数的原型对象,为什么是大多数,因为我们可以通过修改构造函数的原型来破坏这种继承关系,可以,但没必要

看图
–> 代表 继承自
__proto __ 指向 实例的原型对象(浏览器的实现方法,非ECMA标准方法)在这里插入图片描述

继承关系:o --> Object.prototype --> null

在这里插入图片描述

继承关系:a --> Array.prototype --> Object.prototype --> null

在这里插入图片描述

继承关系:a --> Function.prototype --> Object.prototype --> null

在这里插入图片描述

继承关系:cat --> Animal.prototype --> Object.prototype --> null
继承关系:ssc --> People.prototype --> Animal.prototype --> Object.prototype --> null

在这里插入图片描述

继承关系:a --> Foo.prototype
通过修改构造函数Foo的prototype来破坏继承关系
上面修改了Foo原型对象中的__proto__属性为null
导致Foo的实例a想要通过属性__proto__来找到自己的原型对象,找不到
进而终止了此原型链,
但是继承关系依然保留有,证据就是实例a可以访问到Foo.prototype中的属性prop1
a访问不到Object的属性hasOwnProperty,说明它不是从Object继承来的,继承关系被破坏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值