jquery 中的isArray方法分析

<!DOCTYPE html>
<html>
<head>
<title>jq中的isArray方法分析</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<div class="warp">

</div>
<script type="text/javascript">
//下面是从jquery 1.9中抽出来的源码

var class2type = {},core_toString = class2type.toString;
//在firefox chrome IE9 IE10中都支持 Array.isArray
//使用方法 Array.isArray([])   返回 true
//但是在IE7或更低版是不支持的
var isArray = Array.isArray || function( obj ) {
		return type(obj) === "array";
};
/*
这一行也不能忽略  948行
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
	class2type[ "[object " + name + "]" ] = name.toLowerCase();
});
一开始没关注这段代码,结果弄了半天 type([])都是返回 object
那这段代码用JS写出来如下
*/
var arr = "Boolean Number String Function Array Date RegExp Object Error".split(" ");
for(var i in arr){
	class2type[ "[object " + arr[i] + "]" ] = arr[i].toLowerCase();
};


var  type = function( obj ) {
	if ( obj == null ) {
		return String( obj );
	}
	return typeof obj === "object" || typeof obj === "function" ?
		class2type[ core_toString.call(obj) ] || "object" :
		typeof obj;
	// 相当于return (typeof obj === "object" || typeof obj === "function")?(class2type[ core_toString.call(obj) ] || "object"): typeof obj;

};
//这样就可以了

//后来在网上搜索了一下 发现了网上提供的方案是   return Object.prototype.toString.call(obj) === '[object Array]';
//详情查看 http://sofish.de/1591
</script>
</body>
</html>

转载于:https://my.oschina.net/tearlight/blog/123445

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值