美文网首页
js 类型检测

js 类型检测

作者: 前端收藏家 | 来源:发表于2017-11-16 16:10 被阅读13次

1. instanceof

通常 instanceof 就是用来判断某个实例是否属于某种类型

1. 
[] instanceof Array // true;

2.
function Animal(name){
  this.name = name;
}
var dog = new Animal('dog');
dog instanceof Animal // true;

但是还有一种情况,instanceof 可以用于检测一个实例是否属于它的父类型;

function Animal(){}
function Dog(){}
Dog.prototype = new Animal();
var little = new Dog();
little instanceof Animal // true

instanceof 逻辑大概是这个样子的:

function instance_of(L, R) {//L 表示左表达式,R 表示右表达式
 var O = R.prototype;// 取 R 的显示原型
 L = L.__proto__;// 取 L 的隐式原型
 while (true) { 
   if (L === null) 
     return false; 
   if (O === L)// 这里重点:当 O 严格等于 L 时,返回 true 
     return true; 
   L = L.__proto__;  // 从原型链一直往上找,直到Object.__proto__ == null
 } 
}

摘至:https://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/index.html

2. typeof

typeof 11 // "number"
typeof 'sss'  // "string"
typeof null // "object"
typeof undefined  // "undefined"
typeof new Number()  // "object"
typeof new String()  // "object"
typeof Object  // "function"
typeof new Object()  // "object"
typeof Number  // "function"

3. Object.prototype.toString

Object.prototype.toString.call([1,2])  // "[object Array]"
Object.prototype.toString.call({})  // "[object Object]"
Object.prototype.toString.call(function(){})  // "[object Function]"
Object.prototype.toString.call(12)  // "[object Number]"
Object.prototype.toString.call('sss')  // "[object String]"
Object.prototype.toString.call(null)  // "[object Null]"
Object.prototype.toString.call(undefined)  // "[object Undefined]"
Object.prototype.toString.call(Boolean)  // "[object Function]"
Object.prototype.toString.call(true)  // "[object Boolean]"

相关文章

  • Js类型相关总结

    Js的基本数据类型 复杂数据类型 类型检测 typeof 检测检测原理是根据变量存储时低位 instanceof检...

  • js类型检测

    比较常见的类型检测 typeof 注意返回的是字符串instantOf 而实际开发的过程中比较好用的是 Objec...

  • JS类型检测

    一、js类型分类 js中数据类型可分为两大类: 原始类型:Number、String、Boolean、Null、U...

  • 【JS】类型检测

    前言 js 中的类型检测也是很重要的一部分,所以说这篇文章我们就来讲一下怎么对 JavaScript 中的基本数据...

  • js类型检测

    常见的检测方法 1、typeof value typeof返回数据类型的字符串例如:"number"、"strin...

  • js 类型检测

    1. instanceof 通常 instanceof 就是用来判断某个实例是否属于某种类型 但是还有一种情况...

  • js类型检测

    检测数据类型: typeof 不安全,检测正则会返回函数作用域 检测是否是某个对象的实例: instanceo...

  • JS 检测类型

    typeof : 检测基本数据类型 typeof是确定一个变量是字符串、数值、布尔值还是undefined的最佳工...

  • JS类型检测

    es5中有5种基本数据类型(undefined null boolean number string),和1中复杂...

  • js类型检测

    如何判断数据类型? 1.使用typeof 检测基本数据类型时没有问题,但是当其对引用类型进行检测时,会返回obje...

网友评论

      本文标题:js 类型检测

      本文链接:https://www.haomeiwen.com/subject/dulcvxtx.html