pt/Reference/Global_Objects/Object/__defineSetter__) Deprecated 
    3. [ ` Object.prototype.__lookupGetter__() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__) Deprecated 
    4. [ ` Object.prototype.__lookupSetter__() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__) Deprecated 
    5. [ ` Object.prototype.hasOwnProperty() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty)
    6. [ ` Object.prototype.isPrototypeOf() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf)
    7. [ ` Object.prototype.propertyIsEnumerable() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable)
    8. [ ` Object.prototype.toLocaleString() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString)
    9. [ ` Object.prototype.toString() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString)
    10. [ ` Object.prototype.valueOf() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf)

##  In this article

  * Description 
  * Constructor 
  * Instance properties 
  * Instance methods 
  * Examples 
  * Specifications 
  * Browser compatibility 
  * See also 

#  DataView

The **` DataView ` ** view provides a low-level interface for reading and
writing multiple number types in a binary [ ` ArrayBuffer ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) , without having
to care about the platform's [ endianness ](/en-US/docs/Glossary/Endianness) .

##  Description

###  Endianness

Multi-byte number formats are represented in memory differently depending on
machine architecture â see [ Endianness ](/en-US/docs/Glossary/Endianness)
for an explanation. ` DataView ` accessors provide explicit control of how
data is accessed, regardless of the executing computer's endianness.

js

    
    
    const littleEndian = (() => {
      const buffer = new ArrayBuffer(2);
      new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
      // Int16Array uses the platform's endianness.
      return new Int16Array(buffer)[0] === 256;
    })();
    console.log(littleEndian); // true or false
    

###  64-bit Integer Values

Some browsers don't have support for [ ` DataView.prototype.setBigInt64() `
](/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setBigInt64)
and [ ` DataView.prototype.setBigUint64() ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setBigUint64) . So to
enable 64-bit operations in your code that will work across browsers, you
could implement your own ` getUint64() ` function, to obtain values with
precision up to [ ` Number.MAX_SAFE_INTEGER ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) â
which could suffice for certain cases.

js

    
    
    function getUint64(dataview, byteOffset, littleEndian) {
      // split 64-bit number into two 32-bit (4-byte) parts
      const left = dataview.getUint32(byteOffset, littleEndian);
      const right = dataview.getUint32(byteOffset + 4, littleEndian);
    
      // combine the two 32-bit values
      const combined = littleEndian
        ? left + 2 ** 32 * right
        : 2 ** 32 * left + right;
    
      if (!Number.isSafeInteger(combined))
        console.warn(combined, "exceeds MAX_SAFE_INTEGER. Precision may be lost");
    
      return combined;
    }
    

Alternatively, if you need full 64-bit range, you can create a [ ` BigInt `
](/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) . Further,
although native BigInts are much faster than user-land library equivalents,
BigInts will always be much slower than 32-bit integers in JavaScript due to
the nature of their variable size.

js

    
    
    const BigInt = window.BigInt,
      bigThirtyTwo = BigInt(32),
      bigZero = BigInt(0);
    function getUint64BigInt(dataview, byteOffset, littleEndian) {
      // split 64-bit number into two 32-bit (4-byt