博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
25_underscore.js_isArrayLike
阅读量:5884 次
发布时间:2019-06-19

本文共 1423 字,大约阅读时间需要 4 分钟。

// 我们还需要用到上次的	var shallowProperty = function(key) {	    return function(obj) {	      return obj == null ? void 0 : obj[key];	    };  	};  	//首先我们得来弄清楚啥是类数组对  	var arr = Array();//这是真正的数组具有length属性  	console.log(arr.length)//0  	// 真正的数组对象是可以使用Array.prototype对象上的所有方法的  	// 但是类数组也具有length属性  	// 但是呢,他们不能使用Array.prototype上的所有方法  	// 这就是区别所在啊
var o = {	length:2,	name:'ken',	age:18}// 那么那些是类数组对象呢// 比如函数参数里面的 arguments// 比如DOM对象,我们通过getElementsBy* 等方式获取的集合都是类数组// 都可以使用下标操作的,// 但是我们要如何判断一个对象是一个类数组对象// 光判断具有length属性是行不通的,// 上面我们说过,他们不具备Array.prototype 上的所有方法// length 属性的值必须是有限的// 下面我们来看看我们underscore.js是如何实现的呢var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;var getLength = shallowProperty('length');var isArrayLike = function(collection) {	// 获取length属性    var length = getLength(collection);    // 判断length的类型是否number类型    return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;};console.log(isArrayLike(o))// 但是我们感觉也不够精确啊// 我觉得应该判断方法// 我们自己来实现以下var isArrayLike = function(collection){	var length = getLength(collection);	return (!(Array.prototype.alice in collection) && !(Array.prototype.split in collection)) && typeof length === 'number' && length>=0 && length<=MAX_ARRAY_INDEX;}var oPs = document.querySelectorAll("p")console.log(isArrayLike(o));//trueconsole.log(isArrayLike(oPs));//truefunction call(a,b){	console.log(isArrayLike(arguments));//true;}call(1,2);复制代码

在这里附上我的github地址

© 2018 GitHub, Inc.

转载地址:http://iqlix.baihongyu.com/

你可能感兴趣的文章
pxe网络启动和GHOST网克
查看>>
2.5-saltstack配置apache
查看>>
django数据库中的时间格式与页面渲染出来的时间格式不一致的处理
查看>>
Python学习笔记
查看>>
java String
查看>>
DOCKER windows 7 详细安装教程
查看>>
养眼美女绿色壁纸
查看>>
U盘启动盘制作工具箱 v1.0
查看>>
增强myEclipse的提示功能
查看>>
Zabbix汉化方法
查看>>
Java I/O系统基础知识
查看>>
Java多线程设计模式(2)生产者与消费者模式
查看>>
对象并不一定都是在堆上分配内存的
查看>>
刘宇凡:罗永浩的锤子情怀只能拿去喂狗
查看>>
php晚了8小时 PHP5中的时间相差8小时的解决办法
查看>>
JS(JavaScript)的初了解7(更新中···)
查看>>
svn文件管理器的使用
查看>>
for/foreach/linq执行效率测试
查看>>
js /jquery停止事件冒泡和阻止浏览器默认事件
查看>>
[翻译]Protocol Buffer 基础: C++
查看>>