【摘】【编写可维护的JavaScript】判断javascript中的类型
2015-08-23 23:06
731 查看
判断javascript中的类型--编写维护的JavaScript
检测原始值
> 你希望一个值是字符串、数字、布尔值或undefined,最佳选择是使用typeof运算符[code=language-javascript]// 检测字符串 if (typeof name === "string") { antherName = name.sbustring(3); } // 检测数字 if (typeof count ==== "number") { updateCount(count); } // 检测布尔值 if (typeof found === "boolean" && found) { message("Found!"); } // 检测undefined if (typeof MyApp === "undefined") { MyApp = {}; }
> typeof运算符的独特之处在于,将其用于一个未声明的变量也不会报错。未定义的变量和值为undefined的变量通过typeof都将返回""undefined"
检测引用值
> javascript中除了原始值之外的值都是引用。几种类置的引用类型:Object、Array、Date和Error。typeof运算符在判断这些引用类型时则显得力不从心。因为所有对象都会返回Object。typeof运算符用于null时也会返回object[code=language-javascript]// 检测日期 if (value instanceof Date) { console.log(value.getFullYear()); } // 检测正则表达式 if (value instanceof RegExp) { if (value.test(antherValue)) { console.log("Matched"); } } // 检测Error if (value instanceof Error) { throw value; } // 检测自定义对象(唯一的方法) if (me instanceof Person) { } // 所有对象都被认为是Object的实例 if (me instanceof Object) { }
检测函数
[code=language-javascript]function myFunc(){} console.log(typeof myFunc === "function");
检测数组
[code=language-javascript]// 采用鸭式辨型的方法 function isArray(value) { return typeof value.sort === "function"; } // 优雅的解决方案 function isArray(value) { return Object.prototype.toString.call(value) === "[Object Array]"; } function isArray(value) { if (typeof Array.isArray === "function") { return Array.isArray(value); } return Object.prototype.toString.call(value) === "[Object Array]"; }
检测属性
[code=language-javascript]var object = { count: 0, related: null }; if ("count" in object) { } if ("related" in object) { } // IE8以及小于IE8版本中,DOM对象并非继承自Object,因此不包含hasOwnProperty方法 // 如果对象是DOM时需要判断 if ("hasOwnProperty" in Object && Object.hasOwnProperty("related")) { }
相关文章推荐
- JavaScript弹新窗口
- js封装获取标签处理操作 ,ajax,ready()方法
- js知识点
- TOM大叔的几道Javascript题目与解答
- 学习JS(6)
- JavaScript(js)
- javascript学习—理解addLoadEvent函数
- 【javascript】箭头函数
- 用JavaScript实现表单按回车自动提交
- js循环绑定事件
- Flexbox + js实现滑动拼图游戏
- js面向对象
- Github项目中使用率最高的Java/Ruby/JS库(转)
- JavaScript语言基础知识11
- Jsoup解析HTML实例及文档方法详解
- js的定时器
- BackboneJs入门学习[02]---Model初探
- Extjs4处理后台json数据中日期和时间的方法
- Json.NET提供依赖注
- JavaScript 中的闭包(closure)是什么鬼?