JS中原型链中的prototype与_proto_的个人理解与详细总结

时间:2023-11-11 23:40:20

1.对象的内部属性[[prototype]]和属性__proto__:每个对象都具有一个名为__proto__的属性;

2.函数的属性prototype:每个构造函数(构造函数标准为大写开头,如Function(),Object()等等JS中自带的构造函数,以及自己创建的)都具有一个名为prototype的方法(注意:既然是方法,那么就是一个对象(JS中函数同样是对象),所以prototype同样带有__proto__属性);

3.每个对象的__proto__属性指向自身构造函数的prototype;

var obj1= new Date()    obj1的构造函数是Date

有__proto__:被定义的对象

JS中原型链中的prototype与_proto_的个人理解与详细总结

有prototype:构造函数大写字母开头的 或 自己创建的函数

JS中原型链中的prototype与_proto_的个人理解与详细总结

JS中原型链中的prototype与_proto_的个人理解与详细总结

原型链:

一个对象的原型可以是构造函数的prototype隐式赋值给该对象的属性__proto__的,可以是将其他对象直接显示赋值给该对象的属性__proto__的,不管是怎么生成的,对象的原型也是一个对象,而这个原型对象也有它的__proto__属性。当对象寻找一个属性时,先找本身的属性里有没有,没有的话,再在其属性__proto__的原型对象中找,原型对象中没有,再在它的原型对象中找,一环接一环,这就是原型链。