伪数组:

  • 有length属性且不是函数的的就是伪数组。
  • 有的维数组items(index)方法,通过for来遍历得到所有的元素.
  • 某些不支持使用for...of遍历
  • 但是不支持Array的常见方法


function isArrayLike(value) {
   return value != null && isLength(value.length) && !isFunction(value);
}



将伪数组转换为数组:

  • Array.from(nodeList)
  • 或者通过call来直接调用数组的方法
  • [].map.call(nodelist,(each)=>{console.log(‘aaa')})


常见的伪数组:

  • FileList
  • $(`input[type=file]`)[0].files
  • NodeList
  • document.querySelectorAll()
  • arguments
  • 字符串


2.isPlainObject

  • 有什么实际意义?

_proto_为null或者_proto__为Object


function isPlainObject(value) {
   if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
      return false;
   }

   var proto = getPrototype(value);
   if (proto === null) {
      return true;
   }

   var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
   return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; //constructor:f Object()
}



2.isObjectLike   

function isObjectLike(value) {
   return value != null && typeof value == 'object';
}  



isArrayLike/isObjectLike/isPlainObject

isArrayLike/isObjectLike/isPlainObject

2018-12-23 16:59:48 0 135
这里是评论

相关推荐