GeezerVison is showing github.com — doc: clarify Buffer.from when using ArrayBuffer · nodejs/node@dc15608
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: doc/api/buffer.md +16-1Lines changed: 16 additions & 1 deletion - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -599,7 +599,7 @@ added: v5.10.0 |
599 | 599 | This creates a view of the [`ArrayBuffer`][] without copying the underlying |
600 | 600 | memory. For example, when passed a reference to the `.buffer` property of a |
601 | 601 | [`TypedArray`][] instance, the newly created `Buffer` will share the same |
602 | | -allocated memory as the [`TypedArray`][]. |
| 602 | +allocated memory as the [`TypedArray`][]'s underlying `ArrayBuffer`. |
603 | 603 |
|
604 | 604 | ```js |
605 | 605 | const arr = new Uint16Array(2); |
@@ -635,6 +635,21 @@ A `TypeError` will be thrown if `arrayBuffer` is not an [`ArrayBuffer`][] or a |
635 | 635 | [`SharedArrayBuffer`][] or another type appropriate for `Buffer.from()` |
636 | 636 | variants. |
637 | 637 |
|
| 638 | +It is important to remember that a backing `ArrayBuffer` can cover a range |
| 639 | +of memory that extends beyond the bounds of a `TypedArray` view. A new |
| 640 | +`Buffer` created using the `buffer` property of a `TypedArray` may extend |
| 641 | +beyond the range of the `TypedArray`: |
| 642 | + |
| 643 | +```js |
| 644 | +const arrA = Uint8Array.from([0x63, 0x64, 0x65, 0x66]); // 4 elements |
| 645 | +const arrB = new Uint8Array(arrA.buffer, 1, 2); // 2 elements |
| 646 | +console.log(arrA.buffer === arrB.buffer); // true |
| 647 | + |
| 648 | +const buf = Buffer.from(arrB.buffer); |
| 649 | +console.log(buf); |
| 650 | +// Prints: <Buffer 63 64 65 66> |
| 651 | +``` |
| 652 | + |
638 | 653 | ### Static method: `Buffer.from(buffer)` |
639 | 654 | <!-- YAML |
640 | 655 | added: v5.10.0 |
|