arr取前五个对象 js_js原型链

1、对于如下代码,调用arr.reverse()的时候会让数组实现逆序排,调用arr.toString()会用字符串形式展示数组内容。那么问题来了,arr的reverse方法是在哪里定义的?toString方法是哪里定义的?

let arr = [1, 3, 2, 0]
arr.reverse()//[0, 2, 3, 1]
arr.toString()//"0,2,3,1"

arr在js里的数据类型是"object",也就是对象,js中的对象都含有一个__proto__属性,当使用对象的属性时,先从自己的属性开始找,如果找不到则从__proto__里找。

2、arr.__proto__这个属性指向的是Array.prototype

b54f81f8e82ddf9f888fecb5ce8e29a8.png

e6551b6981d0009325354668bf83f1c2.png

由上图可知arr.__proto__===Array.prototype

则arr.__proto__.reverse === Array.prototype.reverse

则arr.__proto__.reverse===arr.reverse

3、Array.prototype里也有__proto__属性,它指向Object.prototype

4e95ca00d542afdac18017c72543e57b.png

4db2f223019985efc3f1916ce88c7969.png

由上图可知,Array.prototype.__proto__===Object.prototype则

Array.prototype.__proto__===arr.__proto__.__proto__

arr.__proto__.__proto__===Object.prototype

arr.__proto__.__proto__.toString===Object.prototype.toString

arr.__proto__.__proto__.toString===arr.toString

4、由此可见这些方法都是定义在arr的原型链上,如下图:

7008f9a8cb9f839cc31304d6839863e9.png

这条顺着__proto__属性往上找的过程就形成了原型链。

资料来源:饥人谷课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值