js 原型链

Posted Develon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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



以上是关于js 原型链的主要内容,如果未能解决你的问题,请参考以下文章

原型对象原型链--js面向对象

JS高级---原型指向可以改变和原型链

JS原型学习之旅之一图了解原型链关系

浅谈js原型与原型链

图解Javascript原型链

关于js中的原型问题