原型链的理解
在理解原型链之前首先要清楚的知道什么是原型对象
原型对象
在JavaScript中,除去一部分内建函数,绝大多数的函数都会包含一个叫prototype的属性,指向原型对象。
内建函数:是指js的内置对象是js自带,封装了一些常用的方法,供开发者使用,可以无需创建对象直接使用。常用的js内置对象有:String,Date,Array,Math等
基于构造函数创建出来的实例,都可以共享访问原型对象的属
例如:hasOwnProperty,
let person = { name: "Tom", age: 18, job: "student" } console.log(person.hasOwnProperty("name")) // true console.log(person.hasOwnProperty("hasOwnProperty")) // false console.log(Object.prototype.hasOwnProperty("hasOwnProperty")) // true
可以看到,hasOwnProperty并不属于person对象上的属性,但是person却能调用
那么person对象是如何找到Object原型中的hasOwnProperty方法呢?这就是靠原型链的能力
如果当前对象上没有,会往原型上找,如果还没找到,会继续往上找原型的原型,直到找到最顶端,Object.prototype,如果还没找到,就会报错(等于null)
而且它的原型对象上也有__proto__,因此串联形成了一个链式结构,也就是我们称为的原型链



浙公网安备 33010602011771号