scr*_*avy 53 javascript arrays
两者之间有什么区别(如果有的话)
x = Array()
Run Code Online (Sandbox Code Playgroud)
和
x = new Array()
Run Code Online (Sandbox Code Playgroud)
我应该使用哪一个?
Ric*_*asi 22
你应该使用文字[]
.这里概述了原因.使用Array()
构造函数可能不明确,因为它接受一个length
或一个元素列表:
new Array(5) // []
new Array('5') // ['5']
[5] // [5]
['5'] // ['5']
Run Code Online (Sandbox Code Playgroud)
你可以在Array
没有new
运算符的情况下使用的原因是内部它与构造函数有一个共同的技巧:
function Thing(){
if (!(this instanceof Thing)){
return new Thing()
}
// ... define object
}
Run Code Online (Sandbox Code Playgroud)
也就是说,如果你打电话,Thing()
它会打电话new Thing()
给你.
Ale*_*ücs 11
一些值得一提的事实:
\nArray === Array.prototype.constructor //true\n
Run Code Online (Sandbox Code Playgroud)\n和
\nnew Array()
new Array
与和 的作用相同[]
事情
然而,调用构造函数的结果并不一定等同于创建对象的新实例。例子:
\nFoo = function(){}\n\nx = Foo() // undefined\ny = new Foo // {}\n
Run Code Online (Sandbox Code Playgroud)\n所以 x 和 y 可以不同。
\n但如果对象本身是一个数组,根据定义您将得到相同的结果,如前所述。
\nx = Array() // []\ny = new Array // []\n
Run Code Online (Sandbox Code Playgroud)\n即使你传递一个整数(告诉长度)
\nx = Array(3) // [empty \xc3\x97 3]\ny = new Array(3) // [empty \xc3\x97 3]\n
Run Code Online (Sandbox Code Playgroud)\n或一个非整数(讲述内容)
\nx = Array(true) // [true]\ny = new Array(true) // [true]\n
Run Code Online (Sandbox Code Playgroud)\n或更多参数(告诉内容)
\nx = Array(1,2,3) // [1,2,3]\ny = new Array(1,2,3) // [1,2,3]\n
Run Code Online (Sandbox Code Playgroud)\n
我相信两者都是等价的.但是,至少在JavaScript中,您应该始终使用文字语法:
x = []
Run Code Online (Sandbox Code Playgroud)
但是基于我所拥有的浏览器中的一些测试,Array(1, 2, 3)
给出了相同的结果new Array(1, 2, 3)
,并且Array(15)
和new Array(15)
.或者只是简单new Array()
.
归档时间: |
|
查看次数: |
15574 次 |
最近记录: |