我发现Array
对象和Array.prototype
都有length
属性。我对使用Array.length
属性感到困惑。你是如何使用它的?
Console.log(Object.getOwnpropertyNames(Array));//As per Internet Explorer
输出:
length,arguments,caller,prototype,isArray,
Prototype
和isArray
可用,但您如何使用length
属性?
答案 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