Array.length与Array.prototype.length

时间:2015-01-30 16:20:41

标签: javascript arrays

我发现Array对象和Array.prototype都有length属性。我对使用Array.length属性感到困惑。你是如何使用它的?

Console.log(Object.getOwnpropertyNames(Array));//As per Internet Explorer

输出:

length,arguments,caller,prototype,isArray,

PrototypeisArray可用,但您如何使用length属性?

4 个答案:

答案 0 :(得分:7)

Array是一个构造函数。

所有函数都有length属性,该属性返回函数定义中声明的参数的数量。

答案 1 :(得分:1)

Array.length是函数Array()占用多少个参数,Array.prototype.length是一个实例方法,它为您提供数组的长度。当您检查['foo'].length时,您实际检查的Array.prototype.length this参数是您的数组['foo']



var myArray = ['a','b','c']
console.log(myArray.length); //logs 3




答案 2 :(得分:0)

如果你有一个Array的实例,那么由于Javascript's use of prototypical inheritance,它会继承Array.prototype的所有属性。

采用以下示例:

function MyClass() {
  this.foo = Math.random();
}

MyClass.prototype.getFoo = function() {
  return this.foo;
}

// Get and log
var bar = new MyClass();
console.log(bar.getFoo());

这声明了一个类的函数(作为构造函数)。该函数为类的每个实例提供原型。当我们为该原型分配方法(getFoo)时,该类的每个实例都将具有该方法。

然后,您可以在实例上调用该方法,它将应用于该类包含的数据。对于数组,length属性将获得您调用它的数组的长度:

[1, 2, 3, 4].length == 4; // Every array has a length

但是,因为函数的行为很像对象,并且可能有自己的属性,Array本身可能具有属性。这就是您在使用Array.length时看到的内容,Array获取{{1}}(构造函数)函数期望接收的参数数量。 Every function has a length property

答案 3 :(得分:0)

Array.length提供Array函数定义中声明的参数数量。由于Array函数定义只有一个size参数,因此无论您的数组内容如何,​​它都将返回1。

Array.prototype.length提供数组数据中的元素数。它取决于数组内容。

var arr=new Array();
console.log(Array.length);//returns 1
console.log(arr.length);//returns 0 as array has 0 elements