Array.isArray 的实现

if (typeof Array.isArray !== 'function') {
    Array.isArray = function (value) {
      return Object.prototype.toString().apply(value) === '[object array]';
    };
}

这里使用到了 Object.prototype.toString.apply() (或者使用 Object.prototype.toString.call()) 的方式,这也是判断其它数据类型常用的一种方式,比如:

function getType(obj) {
  var type = Object.prototype.toString.call(obj).match(/^\[object (.*)\]$/)[1].toLowerCase();
  // Let "new String('')" return 'object'
  if (type === 'string' && typeof obj === 'object') return 'object';
  if (obj === null) return 'null';
  if (obj === undefined) return 'undefined';
  return type;
}

// 示例
getType('123') // 'string'
getType(234) // 'number'
getType(new Set()) // 'set'
getType(Symbol()) // 'symbol'

你可能感兴趣的:(Array.isArray 的实现)