js原型链图解

总结

1.由图可以看出 Function.__proto__ === Object.__proto__ 都指向 Function.prototype,可以得出Function.constructor === Object.constructor 指向 Function,所以实例化Function, Object的__proto__指向构造函数Function的prototype
2.__proto__跟constructor是对象独有的,prototype是函数独有的,但是函数也是对象所以函数有__proto__跟constructor
3.js万物皆对象,上图可看出Function跟Object的__proto__都指向Function.prototype,所以他们的构造函数是一样的
4.原型链:当访问一个对象的属性时,如果属性不存在,他会顺着对象的__proto__一直往上找,直到找到终点null为止。通过__proto__属性将对象连接起来的链路称之为原型链

question

Object.prototype.a = () => alert(1);
Function.prototype.b = () => alert(2);
function F() {}
const obj = new F();
obj.b(); // obj.b is not a funtion
obj.a(); // 1

实例化obj的__proto__指向F.prototype指向Object.prototype,所以访问obj.b会找不到,此时访问F.b可以正常访问

 

posted @ 2021-02-24 11:58  盐焗小羊腿  阅读(236)  评论(0)    收藏  举报