js 原型链

前言

  • 原型链初步
    一个对象a会有一个__proto__属性指向另一个对象b, 当然, 如果这个对象b不为null, 那么它还会指向另一个对象c, 如此一来就形成了一条”原型链”.
a.__proto__ => b, b.__proto__ => c, c.__proto__ => d, d === null

什么是__proto__呢?

  • 对象
    对象由new一个Function实例, 或者通过直接对象值({ field: value })来产生, 后者等价于直接new Object.
({}).__proto__ === Object.prototype
// true

Code

        class B {
            constructor() {
                this.b = ‘bbb‘;
            }
        }
        class A extends B {
            constructor() {
                super();
                this.a = ‘aaa‘;
            }
        }
        let a = new A();
        console.log(a.__proto__ === A.prototype); // true
        console.log(a.__proto__.__proto__ === Object.prototype); // false
        console.log(a.__proto__.__proto__.__proto__ === Object.prototype); // true
        let b = new B();
        console.log(b.__proto__ === B.prototype); // true
        console.log(b.__proto__.__proto__ === Object.prototype); // true

END