为什么Float32Array.length的值始终为3?
问题描述:
我读the Mozilla Developer Network docs on Float32Arrays当我来到为什么Float32Array.length的值始终为3?
Float32Array.length
Length property whose value is 3.
...为什么总是3?我还注意到,同名的原型属性覆盖了它。
答
这是因为构造函数使用最多3个参数:
Float32Array(buffer [, byteOffset [, length]]);
在JavaScript中每个函数的长度属性将返回它所需的命名参数的数量。
E.g.
function foo(a, b) {}
foo.length === 2; // true
function bar() {}
bar.length === 0; // true
答
Float32Array
实际上是一个功能。您可以检查是否这样
console.assert(typeof Float32Array === 'function');
而且该函数接受三个参数。从相同的文档引用的签名,
Float32Array(buffer [, byteOffset [, length]]);
引述Function.length
documentation,
length
是一个函数对象的属性,表示该功能多少个参数预计,即正式的数参数。
这就是为什么Float32Array
的length
属性始终是3
答
这是对于(对象 - )功能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
我倒是几乎认为这是一个宗教问题 – wvdz 2015-04-05 11:54:56
@popovitsj我想他的意思42。 – 2015-04-05 11:55:30