原型链

125 阅读1分钟

原型链

提到原型链,因为自己以前一直不大理解,所以专门花一天时间查看大佬的文章资料,自己总结了一下

原型链的定义: 每个对象都有一个隐式原型属性(__ proto __)指向它的原型对象

例子如下

 let person = function  Person(){
  this.name='lifuya';
  this.age= 18;
};

let user = new person()
user.__proto__ === person.prototype   //true
person.prototype.__proto__ === Object.prototype  //true
Object.prototype.__proto__  === null //true 

user的原型是person.prototype; person.prototype的原型是Object.prototype; Object.prototype的原型是null;

通过例子我们来理解一下原型链的概念:

  • 每个对象都拥有一个原型对象
  • 原型链的终点是null

原型链存在的意义?

大家还是先通过例子了解一下

function  Person(name){
  this.name= name;
  this.age= 18;
};

Person.prototype.desc = '帅的一比'
let user1 = new Person('fuqiu')
let user2 = new Person('lifuya')


console.log(user1.desc, user2.desc) // 帅的一比 帅的一比
for(let i in user1){
  console.log(i)
  console.log(user1.hasOwnProperty(i))
}
// name true
// age true
// desc false

通过例子大家可以发现:可以通过原型链的特性让不同的实例对象享有相同的属性