腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
标签
slice
#
slice
关注
专栏文章
(119)
技术视频
(2)
互动问答
(2)
为什么Go map和slice是非线程安全的
0
回答
go
、
map
、
slice
、
线程安全
gavin1024
抱歉,该回答内容违规,已被管理员封禁
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(),我们只是从样机把它直。这是因为我们不需要初始化一个新的数组。 但是为什么我们首先要这样做呢?那么,正如你所说,它将一个参数对象转换成一个数组实例。然而,我们使用分片的原因更多的是“黑客”。切片方法会把一个数组切片并将该切片作为一个新数组返回。除了参数对象作为上下文之外,不传递任何参数(除了参数对象作为其上下文)将导致切片方法获取传递的“数组”(本例中为参数对象)的完整块并将其作为新数组返回。
热门
专栏
锦小年的博客
131 文章
53 订阅
前端黑板报
183 文章
45 订阅
瓜大三哥
339 文章
93 订阅
媒矿工厂
917 文章
240 订阅
领券