JS区分对象类型

Object.prototype.toString.call() 区分对象类型

在JavaScript中数据类型分为:1.基本类型,2.引用类型

  1. 基本类型:Undefined,Boolean,String,Number,Null
  2. 引用类型:Object (Array,Date,RegExp,Function)

var a = ‘hello world‘;
var b = [];
var c = function(){};
  • 1
  • 2
  • 3

我们用不同的判断类型的方法来判断上面三个变量的类型;(编译工具webStorm,浏览器Chrome) 
1.首先:typeof( )

1.console.log(typeof (a)+‘;‘+typeof (b)+‘;‘+typeof (c))
输出:string;object;function
  • 1
  • 2

2.其次:instanceof

console.log(a instanceof Object)    //false
console.log(b instanceof Object)    //true
console.log(c instanceof Object)    //true
console.log(a instanceof Array)     //false
console.log(b instanceof Array)     //true
console.log(c instanceof Array)     //false
console.log(a instanceof Function)  //false
console.log(b instanceof Function)  //false
console.log(c instanceof Function)  //true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

从上面两个例题可以看出,typeof(),insctanceof,这两种方法都只能对简单的变量进行判断,如果比较复杂的变量判断时就会有误,不精确; 
下面我们介绍Object.prototype.toString.call()方法; 
3.Object.prototype.toString.call()

console.log(Object.prototype.toString.call(a))
console.log(Object.prototype.toString.call(b))
console.log(Object.prototype.toString.call(c))
输出:
[object String]
[object Array]
[object Function]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

可以写个方法传值进入判断:

function isType(obj,type){
        if(obj != ‘‘){
            return Object.prototype.toString.call(obj)===‘[object ‘+type+‘]‘
        }else{
            alert(‘对象不能为空‘)
        }
}
 console.log(isType(‘hello world‘,‘String‘))  //true   

原文地址:https://www.cnblogs.com/0828-li/p/9102768.html

时间: 2024-10-11 12:39:07

JS区分对象类型的相关文章

Object.prototype.toString.call() 区分对象类型

在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种.对于数组.函数.对象,使用 typeof 都会统一返回 “object” 字符串. 有这样一种方法,即使用 Object.prototype.toString.call() 来确定类型. 由于 JavaScript 中一切都是对象,任何都不例外,对所有值类型应用 Object.prototype.toStri

用Object.prototype.toString.call() 区分对象类型

在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种.对于数组.函数.对象来说,其关系错综复杂,使用 typeof 都会统一返回 “object” 字符串. 要想区别对象.数组.函数单纯使用 typeof 是不行的.或者你会想到 instanceof 方法,例如下面这样: var a = {}; var b = []; var c = function () {

JS判断对象类型

对于确定JS内置对象类型,JS提供了typeof运算符,该运算符得到的结果为以下6种:number,boolean,string,function,object,undefined.不过对绝大多数对象而言,typeof都返回"object",无法确定具体的类型.我们使用一种函数Object.prototype.toString.call来判断 <script> var a = 1; console.log("a:"+typeof a); //number

JS对象类型及区别

创建这篇博客的初衷在于记录JS的对象类型,方便查询他们的API和回忆 WebSocket 全双工通信对象 ArrayBuffer 对象用来表示通用的.固定长度的原始二进制数据缓冲区.webSocket支持的传输数据之一 Blob 表示一个不可变.原始数据的类文件对象.document.querySelector('input[type="file"]').files[0];webSocket支持的传输数据之一 Worker 代表一个可以轻松创建的后台任务,并可以将消息发送回其创建者 原

JS 之Blob 对象类型

原文 http://blog.csdn.net/oscar999/article/details/36373183 什么是Blob? Blob 是什么? 这里说的是一种Javascript的对象类型. oracle 中也有类似的栏位类型. [JS进阶] HTML5 之文件操作(file) 这一篇中用到了File对象,而实际上 file 对象只是 blob 对象的一个更具体的版本,blob 存储着大量的二进制数据,并且 blob 的 size 和 type 属性,都会被 file 对象所继承. 所

[JS进阶] JS 之Blob 对象类型

什么是Blob? Blob 是什么? 这里说的是一种Javascript的对象类型. oracle 中也有类似的栏位类型. 在 [JS进阶] HTML5 之文件操作(file) 这一篇中用到了File对象,而实际上 file 对象只是 blob 对象的一个更具体的版本,blob 存储着大量的二进制数据,并且 blob 的 size 和 type 属性,都会被 file 对象所继承. 所以, 在大多数情况下,blob 对象和 file 对象可以用在同一个地方,例如,可以使用 FileReader

js辨别对象的类型

本文主要针对 Null,ExpReg,Array,Date这一些typeof函数辨别不了的对象: 顺便贴上一篇关于typeof的理解:http://www.cnblogs.com/chaky/p/7284163.html 首先,辨别对象类型的方法: 1.instanceof(是否...的实例)  返回true or false 我们可以用它来辨别 ExpReg Array Date类型的对象  不适用于null 2.constructor //原型对象里的构造器指向: 不支持null识别  这里

js面向对象编程:如何检测对象类型

在js中检测对象类型主要有三种,typeof,instanceof,constructor,这几种都可以检测对象的类型,但又有一定的区别.   1使用typeof检测对象类型. typeo作为最常用的检测类型的方法,返回字符串类型,具体使用如下: function testType(value) { var str=typeof(value); // alert(str); switch(str) { case 'undefined': // undefined类型 case 'object'

js中对象的类型

js中的类型分为三种,"内部对象"."宿主对象"."自定义对象" 1."内部对象"有Date.Function.Array.Regexp.Number.Object.String.Math.Global.Boolean, 还有各种错误类对象,包括Error.EvalError.RangeError.ReferenceError.SyntaxError和TypeError. "Global"."Ma