typeof 检测数据类型

javascript 中检测数据类型有好几种,其中最简单的一种是 typeof 方式。typeof 方法返回的结果是一个字符串。typeof 的用法如下:

  typeof value;

typeof 返回的结果有以下几个:"boolean","string","object","undefined","number";

下面是一些示例代码:

var str = "alice";
console.log(typeof str);//返回结果是 "string"
var flag = true;
console.log(typeof flag);//返回结果是 "boolean"
var count = 1;
console.log(typeof count);//返回结果是 "number"
var undefinedValue = undefined;
console.log(undefinedValue); //返回结果是 "undefined"
var nullValue = null;
console.log( typeof nullValue);//返回结果 "object"
console.log(typeof []);//返回结果 “object”
console.log(typeof /^1$/);//返回结果 "object"

示例代码中我们发现,使用 typeof 方法并不能知道一个对象的具体类型。如: typoef [] 和 typeof /^1$/ 返回的结果都是 object,并不能知道两者一个数组,一个是个正则,也就是不知道一个对象具体是什么类型的对象。

instanceof 检测数据类型

为此,javascript 提供了 instanceof 操作符,其语法结构如下:

  var result =  value instanceof constructor;【注意:这里 constructo 代指的是某个构造函数】

  返回结果是一个布尔值。如果结果 true,表示 value 是由 构造函数 constructor 创建,false 则表示 value 不是由构造函数 constructor 创建。

下面是示例代码:l

console.log([] instanceof Array);//true
console.log( {} instanceof Object);//true
console.log(/^1$/ instanceof RegExp);//true

同时,instanceof 检测继承类型,只要检测的类型在数据的原型链上,结果都会返回 true;比如:

  

function Animal() {}

function Dog(name) {
this.name = name;
}
Dog.prototype = new Animal;
Dog.prototype.type = "dog";
Dog.prototype.constructor = Dog;
var dog = new Dog('donald');
console.log(dog instanceof Dog);//true
console.log(dog instanceof Animal);//true Animal 的原型在 dog 的原型链上,所以返回结果也为 true

最新文章

  1. word20161216
  2. sphinx 配置文件全解析
  3. 收藏所用C#技术类面试、笔试题汇总
  4. php之类,对象(二)继承性,static静态的,const常量
  5. CSS 设计彻底研究(一)(X)HTML与CSS核心基础
  6. Java命令学习系列(7):Javap(转)
  7. hdu_2665_Kth number(主席树)
  8. CSS3技巧巧妙使用:not(:last-of-type)简化你的css代码
  9. [JCIP笔记] (一)多线程的起源
  10. "码率适配限速”,如何使带宽成本减少30%?
  11. Pod install Error List
  12. 反编译安卓apk以及jar包
  13. App.Config自定义配置节点
  14. java设计模式-责任链
  15. JavaEE笔记(十四)
  16. 通过图片获取gps地理位置
  17. 让Label等控件支持HTML格式的代码? 使用NSAttributedString:
  18. Comet OJ - Contest #2简要题解
  19. 用Canvas为网页加入动态背景
  20. 使用mybatisplus实现动态路由

热门文章

  1. 微信小程序 功能函数 获取验证码*
  2. 初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序
  3. MT【160】格点
  4. MT【148】凸数列
  5. 设置Linux终端字体颜色
  6. Redis中国用户组|唯品会Redis cluster大规模生产实践
  7. Android Studio快捷键设置之实现原eclipse中ctrl+m的全屏的效果
  8. 解题:POI 2008 Subdivision of Kingdom
  9. bzoj4427【Nwerc2015】Cleaning Pipes清理管道
  10. 【题解】【雅礼集训 2017 Day5】远行 LOJ 6038 LCT