为什么Float32Array.length的值总是3?

时间:2015-04-05 11:53:30

标签: javascript typed-arrays

当我遇到时,我正在阅读the Mozilla Developer Network docs on Float32Arrays

Float32Array.length
Length property whose value is 3.

...为什么总是3?我还注意到同名的prototype属性会覆盖它。

3 个答案:

答案 0 :(得分:7)

Float32Array实际上是一个函数。您可以像这样检查

console.assert(typeof Float32Array === 'function');

该函数接受三个参数。从同一文档中引用签名

Float32Array(buffer [, byteOffset [, length]]);

引用Function.length documentation

  

length是函数对象的属性,表示函数期望的参数数量,即形式参数的数量。

这就是length的{​​{1}}属性始终为3的原因。

答案 1 :(得分:2)

这是因为构造函数最多需要3个参数:

Float32Array(buffer [, byteOffset [, length]]);

JavaScript中的每个函数都有一个length属性,它将返回所需命名参数的计数。

E.g。

function foo(a, b) {}
foo.length === 2; // true

function bar() {}
bar.length === 0; // true

答案 2 :(得分:1)

这是(object-)函数 Float32Array的参数个数的长度。

但是,当您实例化它时,length将表示索引的数量:

console.log(Float32Array.length);  // => 3, number of arguments

var a = new Float32Array(10);      // create an instance with 10 indexes
console.log(a.length);             // => 10, number of indexes