原型和原型链详解
定义
原型:prototype
,就是函数的一个属性
而已,对象形式;
原型链:__proto__
,保存着该对象
的构造函数
的prototype
,也可以理解为儿子的__proto__ 存放着 爸爸的prototype
;
示例
1 |
|
可以看出两者是一样的,成功说明验证了 儿子的__proto__ 存放着 爸爸的prototype
再看一种情况,我们想知道Father的__proto__
是什么,也就说生成Father的构造函数,它的prototype
是什么
1 |
|
为什么是native code
?可以理解为生成Function
的底层代码,底层代码经过一系列运行,生成了Father
这个函数。也就是Function.prototype
;
我们再来看一种情况:
1 |
|
我们明明没有给child添加属性,为什么还能打印出des呢?
其实就是从child
本身开始,一层一层向上找
,只要上级存在des
这个属性,那么都算这个链条上的属性,所以child.des
有值;
想知道child里面到底有没有des属性
这时候就要使用Object.hasOwn()
方法,可以理解为检测本身具体有没有一个属性;
1 |
|
原型和原型链详解
https://liujiaweb.cn/posts/41431.html