js instanceof、typeof、Object.prototype.toString.call(obj)的用法和区别

js里instanceof和typeof、Object.prototype.toString.call()方法都可以用来判断变量的类型。

1、instanceof

    官方文档说明:instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。

    语法:

object instanceof constructor

    instanceof 运算符用来判断 constructor.prototype 是否存在object的原型链上。

function A(){};
function B(){};
var a = new A();
a instanceof A;     //true
a instanceof B;     //false
2、typeof

    语法:

typeof variable   或  typeof(variable)

    官方文档说明:typeof操作符返回一个字符串,指示未经计算的操作数的类型。

   下表总结了typeof可能的返回值。

类型结果
Undefined"undefined"
Null"object"
Boolean"boolean"
Number"number"
String"string"
Symbol (ECMAScript 6 新增)"symbol"
宿主对象(由JS环境提供)Implementation-dependent
函数对象([[Call]] 在ECMA-262条款中实现了)"function"
任何其他对象"object"

typeof 无法判断 array。

3、Object.prototype.toString.call(obj)
    
    Object.prototype.toString.call(obj)返回obj的类型字符串。

    语法:

function A(){};
var a = new A()
Object.prototype.toString.call(a)
//result:"[object Object]"
Object.prototype.toString.call(A)
//result:"[object Function]"
Object.prototype.toString.call(1)
//result:"[object Number]"
Object.prototype.toString.call('a')
//result:"[object String]"
Object.prototype.toString.call()
//result:"[object Undefined]"
var b = [1,2,3]
Object.prototype.toString.call(b)
//result:"[object Array]"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值