iOS 4.2のSafariで各種Array型がサポートされているのを確認
前のこちらエントリーでも紹介したこちらのサイトの「New JavaScript Data-types」の項目にWebGL由来の各種Array型がサポートされたとの情報が有りました。こちらを検証する為にプログラムを書きました。
主な処理はこちら。インスタンスの生成に失敗したら定義されていないという判断です。
function chreckResult(v) { var res = ''; if (v) { res += ' -> <span id="successded">defined</span><br>'; } else { res += ' -> <span id="failed">undefined</span><br>'; } return res; } function test() { var resMsg = ''; var int8; try { resMsg += 'Int8Array '; int8 = new Int8Array(3); } catch(e) { } resMsg += chreckResult(int8); var uint8; try { resMsg += 'Uint8Array '; uint8 = new Uint8Array(3); } catch(e) { } resMsg += chreckResult(uint8); var int16; try { resMsg += 'Int16Array '; int16 = new Int16Array(3); } catch(e) { } resMsg += chreckResult(int16); var uint16; try { resMsg += 'Uint16Array '; uint16 = new Uint16Array(3); } catch(e) { } resMsg += chreckResult(uint16); var int32; try { resMsg += 'Int32Array '; uint8 = new Int32Array(3); } catch(e) { } resMsg += chreckResult(int32); var uint32; try { resMsg += 'Uint32Array '; uint32 = new Uint32Array(3); } catch(e) { } resMsg += chreckResult(uint32); var float32; try { resMsg += 'Float32Array '; float32 = new Float32Array(3); } catch(e) { } resMsg += chreckResult(float32); var float64; try { resMsg += 'Float64Array '; float64 = new Float64Array(3); } catch(e) { } resMsg += chreckResult(float64); document.getElementById("result").innerHTML = resMsg; } window.addEventListener('load', test, false);
実際に試したい場合はiOS 4.2のiPhoneでこちらにアクセスして下さい。
Int32Array と Float64Array 以外、全てのArray型がサポートされるているのが確認できます。
ちなみにWebGLに対応したChromeやWebKitでアクセスしても同様の結果になりました。今のところ Int32Array と Float64Array は実装しないのが主流の様です。
関連サイト
ArrayBufferView - MDC Doc Center
https://developer.mozilla.org/en/JavaScript_typed_arrays/ArrayBufferView#Typed_array_subclasses
JavaScript typed arrays - MDC Doc Center
https://developer.mozilla.org/en/JavaScript_typed_arrays
Typed Array Specification
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/TypedArray-spec.html