# SharedArrayBuffer > [Constructor][mdn-sharedarraybuffer] returning an object used to represent a generic, fixed-length raw binary data buffer which can be used to create views of shared memory.
## Usage ```javascript var SharedArrayBuffer = require( '@stdlib/array/shared-buffer' ); ``` #### SharedArrayBuffer( size ) Returns a [`SharedArrayBuffer`][mdn-sharedarraybuffer] having a specified number of bytes. ```javascript try { var buf = new SharedArrayBuffer( 5 ); // returns } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); } ``` * * * ### Properties #### SharedArrayBuffer.length Number of input arguments the constructor accepts. ```javascript var len = SharedArrayBuffer.length; // returns 1 ``` #### SharedArrayBuffer.prototype.byteLength **Read-only** property which returns the length (in bytes) of the [`SharedArrayBuffer`][mdn-sharedarraybuffer]. ```javascript try { var buf = new SharedArrayBuffer( 5 ); var byteLength = buf.byteLength; // returns 5 } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); } ``` * * * ### Methods #### SharedArrayBuffer.prototype.slice( \[start\[, end]] ) Copies the bytes of a [`SharedArrayBuffer`][mdn-sharedarraybuffer] to a new [`SharedArrayBuffer`][mdn-sharedarraybuffer]. ```javascript try { var b1 = new SharedArrayBuffer( 10 ); var b2 = b1.slice(); // returns var bool = ( b2 === b1 ); // returns false } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); } ``` By default, the method copies from the beginning of the [`SharedArrayBuffer`][mdn-sharedarraybuffer]. To beginning copying from a different byte index, provide a `start` argument, specifying the starting byte index (inclusive). ```javascript try { var b1 = new SharedArrayBuffer( 10 ); var b2 = b1.slice( 2 ); var nbytes = b2.byteLength; // returns 8 } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); } ``` If `start < 0`, the index is relative to the end of the [`SharedArrayBuffer`][mdn-sharedarraybuffer]. ```javascript try { var b1 = new SharedArrayBuffer( 10 ); var b2 = b1.slice( -2 ); var nbytes = b2.byteLength; // returns 2 } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); } ``` By default, the method copies to the end of the [`SharedArrayBuffer`][mdn-sharedarraybuffer]. To copy until a particular byte index, provide an `end` index, specifying the ending byte index (exclusive). ```javascript try { var b1 = new SharedArrayBuffer( 10 ); var b2 = b1.slice( 2, 6 ); var nbytes = b2.byteLength; // returns 4 } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); } ``` If `end < 0`, the index is relative to the end of the [`SharedArrayBuffer`][mdn-sharedarraybuffer]. ```javascript try { var b1 = new SharedArrayBuffer( 10 ); var b2 = b1.slice( 2, -2 ); var nbytes = b2.byteLength; // returns 6 } catch ( err ) { console.log( 'Environment does not support SharedArrayBuffers.' ); } ```
* * *
## Examples ```javascript var randu = require( '@stdlib/random/base/randu' ); var Float64Array = require( '@stdlib/array/float64' ); var Uint8Array = require( '@stdlib/array/uint8' ); var toBinaryString = require( '@stdlib/number/uint8/base/to-binary-string' ); var SharedArrayBuffer = require( '@stdlib/array/shared-buffer' ); function main() { var bytes; var buf; var arr; var i; // Create a new SharedArrayBuffer: buf = new SharedArrayBuffer( 64 ); // Create a Float64 array buffer view: arr = new Float64Array( buf.byteLength/8 ); for ( i = 0; i < arr.length; i++ ) { arr[ i ] = randu() * 100.0; } // Create a "bytes" view of the array buffer: bytes = new Uint8Array( arr.buffer ); // Print the bytes: for ( i = 0; i < bytes.length; i++ ) { console.log( 'byte %d: %s', i, toBinaryString( bytes[ i ] ) ); } } try { main(); } catch ( err ) { console.error( 'Environment does not provide SharedArrayBuffer support.' ); } ```