原型链
提到原型链,因为自己以前一直不大理解,所以专门花一天时间查看大佬的文章资料,自己总结了一下
原型链的定义: 每个对象都有一个隐式原型属性(__ 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
通过例子大家可以发现:可以通过原型链的特性让不同的实例对象享有相同的属性