Update Collection docs

This commit is contained in:
Schuyler Cebulskie
2016-11-20 17:39:55 -05:00
parent c29eb7ab20
commit 74ab72fdea

View File

@@ -5,7 +5,19 @@
class Collection extends Map { class Collection extends Map {
constructor(iterable) { constructor(iterable) {
super(iterable); super(iterable);
/**
* Cached array for the `array()` method - will be reset to `null` whenever `set()` or `delete()` are called.
* @type {?Array}
* @private
*/
this._array = null; this._array = null;
/**
* Cached array for the `keyArray()` method - will be reset to `null` whenever `set()` or `delete()` are called.
* @type {?Array}
* @private
*/
this._keyArray = null; this._keyArray = null;
} }
@@ -23,11 +35,9 @@ class Collection extends Map {
/** /**
* Creates an ordered array of the values of this collection, and caches it internally. The array will only be * Creates an ordered array of the values of this collection, and caches it internally. The array will only be
* reconstructed if an item is added to or removed from the collection, or if you add/remove elements on the array. * reconstructed if an item is added to or removed from the collection, or if you change the length of the array
* itself. If you don't want this caching behaviour, use `Array.from(collection.values())` instead.
* @returns {Array} * @returns {Array}
* @example
* // identical to:
* Array.from(collection.values());
*/ */
array() { array() {
if (!this._array || this._array.length !== this.size) this._array = Array.from(this.values()); if (!this._array || this._array.length !== this.size) this._array = Array.from(this.values());
@@ -36,11 +46,9 @@ class Collection extends Map {
/** /**
* Creates an ordered array of the keys of this collection, and caches it internally. The array will only be * Creates an ordered array of the keys of this collection, and caches it internally. The array will only be
* reconstructed if an item is added to or removed from the collection, or if you add/remove elements on the array. * reconstructed if an item is added to or removed from the collection, or if you change the length of the array
* itself. If you don't want this caching behaviour, use `Array.from(collection.keys())` instead.
* @returns {Array} * @returns {Array}
* @example
* // identical to:
* Array.from(collection.keys());
*/ */
keyArray() { keyArray() {
if (!this._keyArray || this._keyArray.length !== this.size) this._keyArray = Array.from(this.keys()); if (!this._keyArray || this._keyArray.length !== this.size) this._keyArray = Array.from(this.keys());
@@ -158,7 +166,7 @@ class Collection extends Map {
* Searches for the key of an item where `item[prop] === value`, or the given function returns `true`. * Searches for the key of an item where `item[prop] === value`, or the given function returns `true`.
* In the latter case, this is identical to * In the latter case, this is identical to
* [Array.findIndex()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex). * [Array.findIndex()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex).
* @param {string|function} propOrFn The property to test against, or the function to test with * @param {string|Function} propOrFn The property to test against, or the function to test with
* @param {*} [value] The expected value - only applicable and required if using a property for the first argument * @param {*} [value] The expected value - only applicable and required if using a property for the first argument
* @returns {*} * @returns {*}
* @example * @example
@@ -308,8 +316,7 @@ class Collection extends Map {
} }
/** /**
* If the items in this collection have a delete method (e.g. messages), invoke * Calls the `delete()` method on all items that have it.
* the delete method. Returns an array of promises
* @returns {Promise[]} * @returns {Promise[]}
*/ */
deleteAll() { deleteAll() {