当我遇到时,我正在阅读the Mozilla Developer Network docs on Float32Arrays
Float32Array.length
Length property whose value is 3.
...为什么总是3?我还注意到同名的prototype属性会覆盖它。
答案 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