为什么我们需要" new"创建数组时的关键字?

时间:2014-10-21 21:23:56

标签: javascript arrays

也许我不正确地问这个问题,但我主要想知道创建一个有和没有" new"的数组之间有什么区别?关键词?什么时候适合使用?

var myPix = new Array("Images/pic1.jpg", "Images/pic2.jpg", "Images/pic3.jpg"); 

我知道"新" keyword创建一个新对象。但是,由于我正在创建一个包含数组对象的变量,因此不使用" new"?

仍然创建了数组。

最后,我不能轻易使用它吗?

var myPix = ["Images/pic1.jpg", "Images/pic2.jpg", "Images/pic3.jpg"];

3 个答案:

答案 0 :(得分:2)

在Javascript中,"类"实际上是他们自己的构造函数/初始化函数。 Array函数就是一个例子。当您调用new Array时,Javascript首先创建一个未初始化的对象,然后使用该新对象Array()调用this。如果您在没有Array()的情况下运行new,则会跳过第二步而不创建任何要初始化的对象。

凭借其内置类型函数Array,Javascript将转身为您创建对象,即使在没有new的情况下调用也是如此;他们做了正确的事情"因为他们是这样写的。你自己的类型功能不会那么体贴,除非你不遗余力地对它们进行编码。

一般情况下,如果您正在寻找速记符号,则应使用括号形式。

答案 1 :(得分:0)

你可以这样做。

在JavaScript中,一切都是包含数组的对象,实例化的典型方法是使用关键字new。但是,对于包括数组在内的少数情况,可以通过声明这样的数组来避免这种情况:

var arr = [3,45,43,4]; 

然而,第二种方式(使用[])创建数组是首选,因为:

  1. 更简单
  2. 它更快
  3. 请参阅此处的讨论 - Why is arr = [] faster than arr = new Array?

答案 2 :(得分:-1)

使用新数组(" a"," b"," c")相当于[" a",&#34 ; b"," c"]。后者称为Javascript Object Notation,是更像脚本的ala语言,如python。在任何一种情况下,返回的对象仍然是一个数组。