前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Array.apply(),new Array(),arr =[] 的区别

Array.apply(),new Array(),arr =[] 的区别

作者头像
小丑同学
发布2020-09-18 18:08:54
9160
发布2020-09-18 18:08:54
举报
文章被收录于专栏:小丑的小屋

前言

为什么会写这篇文章呢?看Vue文档渲染函数的时候发现一个问题很好奇,Array.apply(null, { length: 20 })为什么这样定义数组?然后查阅资料做了一个小结记录一下,麻雀虽小,五脏俱全。

Array.apply()

apply[1]()在MDN中解释是这样的:

代码语言:javascript
复制
func.apply(thisArg, [argsArray])

thisArg 必选的。在 func 函数运行时使用的 this 值。请注意,this可能不是该方法看到的实际值:如果这个函数处于非严格模式下,则指定为 null 或 undefined 时会自动替换为指向全局对象,原始值会被包装。

argsArray 可选的。一个数组或者类数组对象,其中的数组元素将作为单独的参数传给 func 函数。如果该参数的值为 null 或 undefined,则表示不需要传入任何参数。从ECMAScript 5 开始可以使用类数组对象

代码语言:javascript
复制
function printArguments() {
    console.log(arguments)
    Array.prototype.forEach.call(arguments, function (item) {
        console.log(item);
    });
}
printArguments(undefined,undefined)

由此可见{length:20}是个类数组argument只提供了length的属性相当于创建了一个长度为20,每个元素为undefined的数组

代码语言:javascript
复制
(20) [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]

new Array()

new Array(20)Array(20)只是创建了一个长度为20,元素是空的数组

代码语言:javascript
复制
(20) [empty × 20]

arr = []

代码语言:javascript
复制
let arr=[];
arr.length= 20
代码语言:javascript
复制
(20) [empty × 20]

由此可见new Array(20)let arr=[];arr.length= 20等价

Array.from()

Array.from[2]() 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。

代码语言:javascript
复制
Array.from({length:20})
代码语言:javascript
复制
(20) [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]

结尾

以上就是本文的全部内容,有错误的地方欢迎指出,欢迎点评?,更多干货欢迎关注公众号:小丑的小屋

参考资料

[1]

apply: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

[2]

from: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小丑的小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Array.apply()
  • new Array()
  • arr = []
  • Array.from()
  • 结尾
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档