先看prototype源代码,有这么一个函数
isArray: function(object) {
return object != null && typeof object == "object" && 'splice' in object && 'join' in object;
},
为什么判断一个对象是否为Array的方法里要同时验证splice和join?因为splice和join是Array对象独有的方法。
同样的一幕,也发生在jquery中,
makeArray : function(array) {
var ret = [], i;
if (array != null) {
i = array.length;
// The window, strings (and functions) also have 'length'
if (i == null || typeof array === "string"
|| jQuery.isFunction(array) || array.setInterval) {
ret[0] = array;
} else {
while (i) {
ret[--i] = array[i];
}
}
}
return ret;
},
这个函数先求出array.length,请注意array是个参数,不是数组!我们不妨把它理解成一个未知的对象。注释提到了 拥有length属性的对象除了Array,还有window、String和Function。(具体表示意义,可以查看《网页制作完全手册》和《JScript 语言参考》),里面的if语句刚好考虑了上面的三种情况:
- typeof array === "string" : 判读参数array是String对象;
- jQuery.isFunction(array) : 判读参数array是Function对象;
- array.setInterval : 判读参数array是window对象;
其中,“拥有setInterval的对象一定是window对象”可以作为一个思路,这也是刚开始提到的prototype判断未知对象是否为Array的方法。道理应该相同,我不知道我理解的对不对?
---------------
2009-7-8
---------------
关于判读某个对象是否为数组的另一种方法:
if (Object.prototype.toString.apply(value) === '[object Array]') {
//do sthing
}
以上代码摘自 http://www.json.org/json.js 大概第330行。
---------------
2009-8-1
---------------
《JavaScript语言精粹》谈到了如何精确地判断数组:
var is_array = function(value) {
return value &&
typeof value === 'object' &&
typeof value.length === 'number' &&
typeof value.splice === 'function' &&
!(value.propertyIsEnumerable('length'));
};
有关propertyIsEnumerable方法,可以查看js手册。
分享到:
相关推荐
其次借鉴合作博弈中可能度最大化算法构建一种确定属性权重向量的区间数型决策对象相对相似规划模型,通过集结所有决策对象比较的总体相对相似度值便于对方案对象集进行优劣筛选和次序排定,以此得到一种新的区间数多...
城市最低生活保障对象界定中存在的问题及对策——基于辽宁省本溪市的调查分析,项溪媛,, 本文针对城市低保对象界定工作存在的问题:低保对象界定难;低保对象界定程序不完善;低保对象界定工作的监督体系不健全;...
淫秽电子信息的属性界定及概念区分.pdf
从企业价值链分析流程入手,对企业成本管理中的价值进行界定,提出价值链分析的价值集基础理论,且给出基于可拓学的物元、事元、关系元和复合元的价值表示方式,探讨价值集相关性分析的表示方法,为进一步分析研究企业...
针对产品族演进过程中产品族创新策略选择问题,提出了FAHP-TOPSIS集成方法的产品族创新策略的多属性决策模型。在界定3种产品族创新策略类型和特点的基础上,构建产品族创新策略的评价指标体系及产品族创新策略的多...
谈WTO保障方法实施进程中因果关系的界定.pdf
3C强制性产品认证目录描述与界定表.pdf
江苏省消防安全重点单位界定标准.pdf
北京市消防安全重点单位界定标准.doc
营销策划问题的界定.pptx
广东省资产评估师资产评估-企业价值评估对象的界定试题.docx
2012年天津市消防安全重点单位界定标准.pdf
学困生概念的界定.doc
房屋建筑重大变更与一般变更的界定.pdf
互联网大数据产业相关市场界定方法探析.pdf
会计干货之新兴软件服务模式中的税收收入性质界定及协定适用问题美国§1.86118条款的借鉴.doc
为便于更好地解决不同目标关系的矛盾问题,采用理论分析方法,对多目标矛盾问题的界定进行了研究。给出了界定目标、界定条件的步骤,分析了单评价特征时多目标矛盾问题的可拓模型,讨论了多种情况下单评价特征时多目标...
经理人问题解决四连环之界定问题答案解析.doc
消费者概念界定论文.doc