首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Array() vs new Array()

Array() vs new Array()
EN

Stack Overflow用户
提问于 2011-11-21 07:32:33
回答 2查看 24.3K关注 0票数 89

两者有什么区别(如果有的话)

代码语言:javascript
运行
复制
x = Array()

代码语言:javascript
运行
复制
x = new Array()

我应该使用哪一个?

EN

回答 2

Stack Overflow用户

发布于 2011-11-21 10:15:41

您应该使用文字[]here概述了原因。使用Array()构造函数可能不明确,因为它接受length或元素列表:

代码语言:javascript
运行
复制
new Array(5)   // []
new Array('5') // ['5']

[5]   // [5]
['5'] // ['5']

您可以在不使用new运算符的情况下使用Array的原因是,在内部,它对构造函数执行一个常见的技巧:

代码语言:javascript
运行
复制
function Thing(){
    if (!(this instanceof Thing)){
        return new Thing()
    }
    // ... define object
}

也就是说,如果您调用Thing(),它将为您调用new Thing()

票数 34
EN

Stack Overflow用户

发布于 2020-09-28 23:33:10

值得一提的是:

代码语言:javascript
运行
复制
Array === Array.prototype.constructor //true

new Array()也与new Array[]做同样的事情

但调用构造函数的结果不必等同于创建对象的新实例。示例:

代码语言:javascript
运行
复制
Foo = function(){}

x = Foo()   // undefined
y = new Foo // {}

所以x和y可以不同。

但是,如果对象本身是一个数组,您将获得相同的定义,如前所述。

代码语言:javascript
运行
复制
x = Array()   // []
y = new Array // []

即使你传递一个整数(告诉长度)

代码语言:javascript
运行
复制
x = Array(3)     // [empty × 3]
y = new Array(3) // [empty × 3]

或一个非整数(告知内容)

代码语言:javascript
运行
复制
x = Array(true)     // [true]
y = new Array(true) // [true]

或更多参数(告知内容)

代码语言:javascript
运行
复制
x = Array(1,2,3)     // [1,2,3]
y = new Array(1,2,3) // [1,2,3]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8205691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档