javascript的原型链解析(相信你也可以)

好久没发博客 这学期转前端了

首先挂上我看的资料
感谢这两位大佬

说明了原型链的产生缘由

Javascript继承机制的设计思想 - 阮一峰的网络日志 (ruanyifeng.com)

完整的说明的原型链的结构

帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)_码飞_CC的博客-CSDN博客_js prototype

建议先看上面两篇文章

个人总结

  • js万物皆对象 函数实际上也是一个对象

  • __proto__ 在浏览器的控制台打印是[[prototype]]
    
    __proto__和coustructor属于对象里的东西
    prototype属于函数
    
    但是函数也是对象所以也具有__proto__和coustructor
    
  • prototype 本身也是对象 但是是作为继承链的重要部分 普通对象就是实例 我们日常使用的对象

普通对象 prototype 函数
[[prototype]] 指向所在原型链的上一级的prototype 指向所在原型链的上一级的prototype 指向所在原型链的上一级的prototype
coustructor 指向所在原型链的上一级构造函数 当前层级的构造函数 指向所在原型链的上一级构造函数
prototype 没有 没有 指向同层级的prototype

可以看的出来 [[prototype]]永远指向当前原型链位置中的上一级的prototype

coustructor指向当前层级的构造函数 当本身为构造函数或者当前层没有的使用 就指向上一层

prototype为构造函数唯有的属性 同时一旦创建函数 prototype就自动生成 指向原型 也就是prototype

来 上一段代码

看懂你就会了

function a(){};
a.prototype.look = "go111";
function b(){};
b.__proto__=a.prototype;
console.log(b.look);

结果是 go111

posted @ 2022-04-25 20:37  TIGO  阅读(36)  评论(0编辑  收藏  举报