关于原型、原型链的一些总结

原型链:
原型链主要是指实例与原型的关系,与构造函数无关
原型的[[prototype]]属性(在某些浏览器中可用__proto__属性)指向其原型,当这个原型又是另外一个原型的实例,那个原型的[[prototype]]属性会指向另一个原型,以此类推,这样在实例和原型之间构造了一条原型链

实例、构造函数、原型对象三者关系:
构造函数的prototype属性指向它的原型对象,原型对象的constructor属性指回构造函数,实例的[[prototype]](__proto__)属性指向原型对象
所以当看到一个原型对象的constructor属性的时候,可以大概率反推构造函数(因为存在重写,所以是大概率)

属性搜索原理:
利用原型链,当在一个实例上找不到一个属性的时候,就会沿着原型链找它的原型,如果此时的原型有这个属性,就返回这个属性,如果没有则继续往上一层的原型寻找,直到null(原型链的尽头),这时候就返回undefind

javascript主要利用原型链实现继承,继承过程中,如果子类新增的属性或方法与原型某个属性或方法名相同,这时候会遮蔽原型的这个属性或方法

instanceof原理:
只要在原型链上出现过这些构造函数的原型,都会返回true

原型改写会破坏原型对象与构造函数的关系,主要是破坏了原型对象的constructor指向(js创建构造函数时,其内部有个指针指向其原型对象,其原型对象又有一个属性指回构造函数)

Object.create(obj) ====>以obj为原型创建一个对象,但创建的每个对象都会共享原型的信息,即属性中的引用类型会共享

——————以上为查阅相关资料后的一些个人思考与总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值