两者有什么区别(如果有的话)
x = Array()
和
x = new Array()
我应该使用哪一个?
发布于 2011-11-21 10:15:41
您应该使用文字[]
。here概述了原因。使用Array()
构造函数可能不明确,因为它接受length
或元素列表:
new Array(5) // []
new Array('5') // ['5']
[5] // [5]
['5'] // ['5']
您可以在不使用new
运算符的情况下使用Array
的原因是,在内部,它对构造函数执行一个常见的技巧:
function Thing(){
if (!(this instanceof Thing)){
return new Thing()
}
// ... define object
}
也就是说,如果您调用Thing()
,它将为您调用new Thing()
。
发布于 2020-09-28 23:33:10
值得一提的是:
Array === Array.prototype.constructor //true
和
new Array()
也与new Array
和[]
做同样的事情
但调用构造函数的结果不必等同于创建对象的新实例。示例:
Foo = function(){}
x = Foo() // undefined
y = new Foo // {}
所以x和y可以不同。
但是,如果对象本身是一个数组,您将获得相同的定义,如前所述。
x = Array() // []
y = new Array // []
即使你传递一个整数(告诉长度)
x = Array(3) // [empty × 3]
y = new Array(3) // [empty × 3]
或一个非整数(告知内容)
x = Array(true) // [true]
y = new Array(true) // [true]
或更多参数(告知内容)
x = Array(1,2,3) // [1,2,3]
y = new Array(1,2,3) // [1,2,3]
https://stackoverflow.com/questions/8205691
复制相似问题