js原型知识梳理(二)

最近从新梳理了一下原型的知识,想分享一下,但愿对那些被原型,原型链,构造函数,实例对象等关系满头包的童鞋有些帮助~~~
废话不说了 上代码函数

//原型 prototype
        function Man(name,age){
            this.name=name,
            this.age=age
        }
        let Person={
            name:'李四',
            age:18,
            hobby:'reading',
            //...
        }
        Man.prototype=Person  //这里 Person 就是Man的原型 
        //原型是指构造函数经过prototype访问的属性

        let boy=new Man() //boy为Man的实例对象 
        //boy是Man这个构造函数实例化出来的对象
        console.log(boy)

这是boy的打印结果
image.pngthis

再打印一下 boy.__proto__ 咱们能够看到boy的__proto__是Man的原型 Person对象spa

image.png

console.log(boy.__proto__==Man.prototype)// true 
//boy这个实例化对象的原型和Man的原型指向同一个对象`

继续打印 boy._proto_._proto_和boy._proto_._proto_._proto_prototype

console.log(boy.__proto__.__proto__)//Object
//能够看到boy的原型的原型是Object对象,再往上找为空
        console.log(boy.__proto__.__proto__.__proto__)//null
        //这种经过_proto_逐层向上访问的链式关系称为原型链

image.png

下面是原型,原型链,构造函数的关系图
咱们能够看到,原型链就是经过_proto_链接的链式继承关系3d

image.png

相关文章
相关标签/搜索