腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
首页
标签
prototype
#
prototype
关注
专栏文章
(100)
技术视频
(0)
互动问答
(1)
Array.prototype.slice.call()如何工作?
2
回答
arguments
、
prototype
、
slice
、
工作
、
数组
以往V
arguments对象实际上不是一个数组的实例,也没有任何数组方法。所以,arguments.slice(...)不会工作,因为参数对象没有切片方法。 数组确实有这种方法,并且因为arguments对象与数组非常相似,所以两者是兼容的。这意味着我们可以使用参数对象的数组方法。而且由于数组方法是用数组构建的,他们将返回数组而不是其他的参数对象。 那为什么要用Array.prototype?这Array是我们从(new Array())中创建新数组的对象,并且这些新数组通过方法和属性(如slice)传递。这些方法存储在[Class].prototype对象中。因此,为了提高效率,而不是通过访问切片的方法(new Array()).slice.call()或[].slice.call(),我们只是从样机把它直。这是因为我们不需要初始化一个新的数组。 但是为什么我们首先要这样做呢?那么,正如你所说,它将一个参数对象转换成一个数组实例。然而,我们使用分片的原因更多的是“黑客”。切片方法会把一个数组切片并将该切片作为一个新数组返回。除了参数对象作为上下文之外,不传递任何参数(除了参数对象作为其上下文)将导致切片方法获取传递的“数组”(本例中为参数对象)的完整块并将其作为新数组返回。...
展开详请
赞
0
收藏
0
评论
0
分享
arguments对象实际上不是一个数组的实例,也没有任何数组方法。所以,arguments.slice(...)不会工作,因为参数对象没有切片方法。 数组确实有这种方法,并且因为arguments对象与数组非常相似,所以两者是兼容的。这意味着我们可以使用参数对象的数组方法。而且由于数组方法是用数组构建的,他们将返回数组而不是其他的参数对象。 那为什么要用Array.prototype?这Array是我们从(new Array())中创建新数组的对象,并且这些新数组通过方法和属性(如slice)传递。这些方法存储在[Class].prototype对象中。因此,为了提高效率,而不是通过访问切片的方法(new Array()).slice.call()或[].slice.call(),我们只是从样机把它直。这是因为我们不需要初始化一个新的数组。 但是为什么我们首先要这样做呢?那么,正如你所说,它将一个参数对象转换成一个数组实例。然而,我们使用分片的原因更多的是“黑客”。切片方法会把一个数组切片并将该切片作为一个新数组返回。除了参数对象作为上下文之外,不传递任何参数(除了参数对象作为其上下文)将导致切片方法获取传递的“数组”(本例中为参数对象)的完整块并将其作为新数组返回。
热门
专栏
站长的编程笔记
3.7K 文章
51 订阅
clz
159 文章
24 订阅
前端技术分享小合集
160 文章
21 订阅
前端一会
117 文章
27 订阅
前端面试秘籍
252 文章
32 订阅
热门
标签
更多标签
ICP备案
云服务器
对象存储
云点播
即时通信 IM
实时音视频
DNS 解析 DNSPod
人脸识别
内容分发网络 CDN
私有网络
python
java
javascript
人工智能
android
领券