Javascript-Opera中未定义每个元素的字节数

Javascript-Opera中未定义每个元素的字节数,javascript,opera,arraybuffer,Javascript,Opera,Arraybuffer,我正在尝试使用ArrayBuffers、Websockets和library编写一些应用程序,但在相当简单的代码上失败了,我还没有找到任何关于相同问题的相关页面 问题是 var arr = new Uint8Array(6); alert(arr.BYTES_PER_ELEMENT); 返回未定义的。我可以直接使用Uint8Array.BYTES\u PER\u ELEMENT(在Opera 1中),但DataStream.js库使用“通用”方式来获取此属性:(DataStream.js:37

我正在尝试使用ArrayBuffers、Websockets和library编写一些应用程序,但在相当简单的代码上失败了,我还没有找到任何关于相同问题的相关页面

问题是

var arr = new Uint8Array(6);
alert(arr.BYTES_PER_ELEMENT);
返回未定义的。我可以直接使用
Uint8Array.BYTES\u PER\u ELEMENT
(在Opera 1中),但DataStream.js库使用“通用”方式来获取此属性:(DataStream.js:377)

有没有什么方法可以让它在Opera 12中保持通用性?类似于每个元素的原始字节数


还是我做错了什么?在Chromium中,它可以正常工作。

因此,在与ivy_lynx进行简短讨论后,我决定采用这种简单的方法,设定原型中应该设定的值。现在,DataStream.js库即使在Opera 12.16中也可以正常工作

if (Uint8Array.prototype.BYTES_PER_ELEMENT == undefined) {
    Uint8Array.prototype.BYTES_PER_ELEMENT = Uint8Array.BYTES_PER_ELEMENT; 
    Uint8ClampedArray.prototype.BYTES_PER_ELEMENT = Uint8ClampedArray.BYTES_PER_ELEMENT; 
    Int8Array.prototype.BYTES_PER_ELEMENT = Int8Array.BYTES_PER_ELEMENT; 
    Uint16Array.prototype.BYTES_PER_ELEMENT = Uint16Array.BYTES_PER_ELEMENT; 
    Int16Array.prototype.BYTES_PER_ELEMENT = Int16Array.BYTES_PER_ELEMENT; 
    Uint32Array.prototype.BYTES_PER_ELEMENT = Uint32Array.BYTES_PER_ELEMENT; 
    Int32Array.prototype.BYTES_PER_ELEMENT = Int32Array.BYTES_PER_ELEMENT; 
    Float64Array.prototype.BYTES_PER_ELEMENT = Float64Array.BYTES_PER_ELEMENT; 
}

好吧,如果每个元素的
BYTES\u
是未定义的,那么很可能您将不得不使用自己的一些默认定义作为后备。由于Opera是基于chromium的,所以使用相同的值可能是安全的,但没有什么是确定的。在清单中,它声明Opera确实定义了常量。你用的是什么版本?Opera 12不是基于chromium的。Opera12是为linux发布的最新版本。我使用的确切版本是linux x86_64 12.16。web只显示
Uint8Array.BYTES\u PER\u ELEMENT
,而不是
arr.BYTES\u PER\u ELEMENT
,其中
arr
是Uint8Array的实例,虽然它没有提到他测试的opera版本,但它也显示了一些特殊的构造函数行为。
if (Uint8Array.prototype.BYTES_PER_ELEMENT == undefined) {
    Uint8Array.prototype.BYTES_PER_ELEMENT = Uint8Array.BYTES_PER_ELEMENT; 
    Uint8ClampedArray.prototype.BYTES_PER_ELEMENT = Uint8ClampedArray.BYTES_PER_ELEMENT; 
    Int8Array.prototype.BYTES_PER_ELEMENT = Int8Array.BYTES_PER_ELEMENT; 
    Uint16Array.prototype.BYTES_PER_ELEMENT = Uint16Array.BYTES_PER_ELEMENT; 
    Int16Array.prototype.BYTES_PER_ELEMENT = Int16Array.BYTES_PER_ELEMENT; 
    Uint32Array.prototype.BYTES_PER_ELEMENT = Uint32Array.BYTES_PER_ELEMENT; 
    Int32Array.prototype.BYTES_PER_ELEMENT = Int32Array.BYTES_PER_ELEMENT; 
    Float64Array.prototype.BYTES_PER_ELEMENT = Float64Array.BYTES_PER_ELEMENT; 
}