Uint8ClampedArray() コンストラクター
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Uint8ClampedArray()
は型付き配列のコンストラクターで、 0-255 に制約される 8 ビット符号なし整数値の配列を生成します。指定された値が [0,255] の範囲を超えた場合、 0 または 255 が代わりに設定されます。整数以外を指定しようとすると、最も近い整数が設定されます。中身は 0
で初期化されます。生成されると、配列の中の要素はオブジェクトのメソッドを使用するか、配列の標準的な添字の構文を使用するか (すなわち、ブラケット構文を使用するか) して参照することができます。
構文
new Uint8ClampedArray(); // new in ES2017 new Uint8ClampedArray(length); new Uint8ClampedArray(typedArray); new Uint8ClampedArray(object); new Uint8ClampedArray(buffer [, byteOffset [, length]]);
引数
length
-
length
引数付きで呼び出されると、メモリ内に内部的な配列バッファーを作成し、大きさはlength
をBYTES_PER_ELEMENT
で乗じたバイト数になり、ゼロになることもあります。 typedArray
-
typedArray
引数付きで呼び出されると、これはあらゆる型付き配列型 (例えばInt32Array
) にすることができますが、typedArray
を新しい型付き配列にコピーします。typedArray
の中のそれぞれの値は、新しい配列にコピーされる前にコンストラクターの対応する型に変換されます。新しい型付き配列の長さはtypedArray
引数の長さと同じになります。 object
-
object
引数付きで呼び出されると、あたかもTypedArray.from()
メソッドであるかのように新しい型付き配列が生成されます。 buffer
,byteOffset
,length
-
buffer
と、オプションでbyteOffset
とlength
引数を指定して呼び出されると、指定されたArrayBuffer
を表示する型付き配列ビューが生成されます。byteOffset
およびlength
引数は、型付き配列ビューが表示するメモリ範囲を指定する。 両方を省略した場合はbuffer
の全てを表示し、length
のみを省略した場合はbuffer
の残りを表示します。
例
様々な方法による Uint8ClampedArray の生成
// 長さを指定
var uintc8 = new Uint8ClampedArray(2);
uintc8[0] = 42;
uintc8[1] = 1337;
console.log(uintc8[0]); // 42
console.log(uintc8[1]); // 255 (clamped)
console.log(uintc8.length); // 2
console.log(uintc8.BYTES_PER_ELEMENT); // 1
// 配列から
var arr = new Uint8ClampedArray([21, 31]);
console.log(arr[1]); // 31
// 他の型付き配列から
var x = new Uint8ClampedArray([21, 31]);
var y = new Uint8ClampedArray(x);
console.log(y[0]); // 21
// ArrayBuffer から
var buffer = new ArrayBuffer(8);
var z = new Uint8ClampedArray(buffer, 1, 4);
// 反復可能オブジェクトから
var iterable = (function* () {
yield* [1, 2, 3];
})();
var uintc8 = new Uint8ClampedArray(iterable);
// Uint8ClampedArray[1, 2, 3]
仕様書
Specification |
---|
ECMAScript Language Specification # sec-typedarray-constructors |
ブラウザーの互換性
BCD tables only load in the browser
互換性メモ
ECMAScript 2015 から、 Uint8ClampedArray
コンストラクターは構築に new
演算子が必要になりました。 Uint8ClampedArray
コンストラクターを new
なしで関数として呼び出すと、 TypeError
が発生するようになりました。
var dv = Uint8ClampedArray([1, 2, 3]);
// TypeError: calling a builtin Uint8ClampedArray constructor
// without new is forbidden
var dv = new Uint8ClampedArray([1, 2, 3]);