wip needs editing
// native array methods are functions attached to the prototype of the variadic constructor or object literal, and are inherited via prototypal inheritance
Array.prototype[METHOD].call, [].prototype[METHOD].call, let arr_ = [1,2,3]; arr[METHOD].call
// the common argument pattern for methods is VIA: value, index, array
[].forEach((value, index, array) => value++)
// there are iterables
let mappedArr = [].map((v) => {})
let filteredArr = [].filter((v) => (v === true) ? v : undefined)
// and accessors for properties and scalar values
let length = [].length
let contains = [].indexOf.call(this, )
Array.prototype.splice.call([], 0, 1, 1)
Array.prototype.slice.call([], 0, 0, 1)
// you can also cast string
[].split(',')
// Javascript arrays are technically objects
// typeof === 'object' // true
// but they contain properties which differentiate them from other objects
// [].prototype.isArray([]) // true