什么是原型链?1分钟看懂原型链

2023-04-26  本文已影响0人  万水千山林

说原型链之前先思考一个问题。

var fun = function (){}
fun.toString() // 'function (){}'
fun 上这个toString方法哪里来的

var arr = [];
arr.length // 0
arr 上length 方法又是哪里来的

所有函数上都有一个属性prototype(原型对象)
所有对象上都有一个私有属性__ proto__

对象的__ proto__指向其构造函数的prototype

var obj = new Object()
obj.__proto__ ===  Object.prototype  // true

prototype是原型对象


image.png

可以看到obj就是一个没有任何属性,但是执行obj.toString()却没有报错

obj.toString()
// '[object Object]'

原因是obj的构造函数Object()里面有这些方法,当在obj里面找不到toString()时,js就会默认在obj.__ proto__里面寻找,找到就拿出来用,就这样一层接一层的寻找,直到尽头
尽头是null


image.png

这就是原型链

上一篇下一篇

猜你喜欢

热点阅读