我读the Mozilla Developer Network docs on Float32Arrays当我来到为什么Float32Array.length的值始终为3?
Float32Array.length
Length property whose value is 3.
...为什么总是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