当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JS原型对象、隐式原型与原型链

JS原型对象、隐式原型与原型链

2020年07月26日  | 移动技术网IT编程  | 我要评论

原型对象 与 prototype

任意构造器中都有prototype属性,该属性的值为一个对象,这个对象就叫做原型对象

隐式原型 与 proto

任意对象(除null)中都有属性_proto_ ,该属性会指向这个对象的原型对象。
任意对象(除null)中都有属性constructor,该属性指向创建这个对象的构造器。

原型链

对象属性查找机制。先在自己的私有属性种找,无。则沿着_proto_去原型对象中找,再无,继续沿着_proto_去原型对象的原型对象中找。直至找到Object的原型对象(Object的_proto_指向null)为止。这样形成的一条查找链就是原型链。
如果一直没有找到,结果为undefined。

对应关系图解
原型链示意

代码

原型链代码段

    <script>
    function Fn(num){
        this.x=this.y=num;
    }
    Fn.prototype={
        x:20,
        sum:function(){
            console.log(this.x+this.y)
        }
    }
    Fn.prototype.constructor=Fn;
    let f1 = new Fn(10);
    console.log(f1.sum===Fn.prototype.sum)
    f1.sum();
    Fn.prototype.sum();
    console.log(f1.constructor)
    </script>

解释

Fn构造器(Fn构)prototype属性指向Fn构的原型对象(Fn原)
Fn原有constructor属性指回Fn构

Fn.prototype={
 x:20,
sum:function(){
    console.log(this.x+this.y)
   }
}

将Fn的原型对象指向改变,指向一个新的对象A。新对象A内容为{}内容

Fn.prototype.constructor=Fn;

新对象A中添加constructor属性,值为Fn。先新建new一个空对象,然后在赋值。

在这里插入图片描述

我的理解

1)F构造器prototype属性指向F构的原型对象(F原)
2)F原有constructor属性指回F构
     F原有_ _ proto_ _指向一个object的原型对象(创建这个原型对象的构造器的原型对象)
3)object原型对象(o原)有一个constructor属性指回object构造器(o构)
   o原有_ _proto_ _指向null
   同样,o构有prototype属性指向o原

4)查找一个对象的属性,先在自己的原型对象上找
   如果没有找到,则沿着_proto_去原型对象中找,直至找到object中的原型对象null
5)_proto_属性中的值为null。最终没有找到为undfine

本文地址:https://blog.csdn.net/sd6022/article/details/107574489

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网