参数类型的判断

/*
* 入口函数的逻辑判断:
* 1、如果参数转换为布尔类型为false,那么直接返回新实例即可
* 2、如果传入的是函数,那么把这个函数加到xxx,返回新实例即可
* 3、如果传入的是字符串,判断是不是html字符串,如果是xxx,不是则当做选择器处理
* 4、如果传入的是数组或伪数组,那么xxx
* 5、如果传入的是其他数据,xxxx
* */

// 判断数据是不是html字符串
function isHTML( str ) {

// 如果传入的不是字符串,直接返回false
if ( typeof str !== 'string' ) {
return false;
}

// 如果传入的是字符串,看看这个字符串结构符不符合html字符串结构,符合返回true
if( str[ 0 ] === '<' && str[ str.length - 1 ] === '>' && str.length >= 3 ) {
return true;
}

// 不符合返回false
return false;
}

// 把传入的html字符串解析成对应的DOM
function parseHTML( html ) {
var tempDiv = document.createElement('div');
tempDiv.innerHTML = html;
return tempDiv.childNodes;
}

// 判断数据是不是对象类型
function isObject( obj ) {

if( (typeof obj === 'object' && obj !== null) || typeof obj === 'function' ) {
return true;
}

return false;
}

// 判断数据是不是数组或伪数组
function isLikeArray( likeArray ) {

// 过滤 function、window、!object
if( typeof likeArray === 'function'
|| likeArray.window === likeArray || !isObject( likeArray ) ) {
return false;
}

// 判断是不是真数组
if( likeArray instanceof Array ) {
return true;
}

// 判断是不是伪数组,要么length值为0,
// 要么length值为number,并且还得有lenght - 1这个属性
if( likeArray.length === 0
|| ( typeof likeArray.length === 'number' && (likeArray.length - 1) in likeArray ) ) {
return true;
}

return false;
}

// 判断是不是函数
function isFunction( fn ) {
return typeof fn === 'function';
}

// 判断是不是字符串
function isString( str ) {
return typeof str === 'string';
}

原文地址:https://www.cnblogs.com/luxiaoxiao/p/6099579.html