Run details:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36
Chrome 89
Linux
Desktop
3 years ago
Test name Executions per second
isArray 299323.2 Ops/sec
instanceof 290084.9 Ops/sec
Symbol.iterator 182463.8 Ops/sec
Object.prototype.toString.call 260791.2 Ops/sec
Script Preparation code:
x
 
var types = {
  array: [1,2,3],
  number: 123,
  string: '123',
  map: new Map([[1,1],[2,2],[3,3]]),
  set: new Set([1,2,3]),
  buffer: new ArrayBuffer([1,2,3]),
  boolean: true,
  arrow: () => {},
  function: function () {},
  object: {},
  u8: new Uint8Array(),
  u16: new Uint16Array(),
  u32: new Uint32Array(),
  i8: new Int8Array(),
  i16: new Int16Array(),
  i32: new Int32Array()
}
var keys = Object.keys(types)
Tests:
  • isArray

     
    keys.map(key => Array.isArray(types[key]) === true)
  • instanceof

     
    keys.map(key => (types[key] instanceof Array) === true)
  • Symbol.iterator

     
    keys.map(key => types[key][Symbol.iterator] !== undefined)
  • Object.prototype.toString.call

     
    keys.map(key => Object.prototype.toString.call(types[key]) === '[object Array]')