伪数组:
  • 有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

2019-02-16 21:53:23 0 9
这里是评论

相关推荐