JS原型对象、隐式原型与原型链
程序员文章站
2022-07-02 08:59:36
原型对象 与 prototype任意构造器中都有prototype属性,该属性的值为一个对象,这个对象就叫做原型对象隐式原型 与 proto任意对象(除null)中都有属性_proto_ ,该属性会指向这个对象的原型对象。任意对象(除null)中都有属性constructor,该属性指向创建这个对象的构造器。原型链对象属性查找机制。先在自己的私有属性种找,无。则沿着_proto_去原型对象中找,再无,继续沿着_proto_去原型对象的原型对象中找。直至找到Object的原型对象(Object的...
原型对象 与 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
上一篇: Mysql常用快捷键