js instanceof、typeof、Object.prototype.toString.call(obj)的用法和区别
2018-03-12 16:39
816 查看
js里instanceof和typeof、Object.prototype.toString.call()方法都可以用来判断变量的类型。
1、instanceof 官方文档说明:
语法:object instanceof constructor instanceof 运算符用来判断 constructor.prototype 是否存在object的原型链上。function A(){};
function B(){};
var a = new A();
a instanceof A; //true
a instanceof B; //false2、typeof 语法:typeof variable 或 typeof(variable) 官方文档说明:
下表总结了
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]"
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; //false2、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" |
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]"
相关文章推荐
- js判断对象类型 typeof与Object.prototype.toString.call方法的区别
- js 原始类型 内置对象 protype instanceof construcor Object.prototype.toString.call()
- Javascript中数据类型及其判别方法(typeof instanceof Object.prototype.toSting.call(obj)的区别)
- JS中typeof、Object.prototype.toString.call、constructor
- typeof 和 Object.prototype.toString.call 数据类型判断的区别
- js中精确判断对象类型--关于typeof 和Object.prototype.toString方法的区别
- typeof,instanceof,Object.prototype.toString.call(),js内置对象
- JS类型判断typeof PK {}.toString.call(obj)
- js中toStirng()与Object.prototype.toString.call()方法理解
- [置顶] JS类型判断typeof PK {}.toString.call(obj);
- js进行类型判断 Object.prototype.toString.call()
- 用Object.prototype.toString.call(obj)检测对象类型原因分析
- js的深入学习课程Object.prototype.toString.call()
- JavaScript中toStirng()与Object.prototype.toString.call()区别
- 判断js中各种数据的类型方法之 typeof() 和 Object.prototype.toString() 详解
- js 检测数据类型instanceof/constructor和 Object.prototype.toString.call()
- 【web前端】typeof和object.toString.call()的区别
- js中[object Object]与object.prototype.toString.call()
- typeof、instanceof、Object.prototype.toString.call() 区分对象类型
- 【web前端】typeof和object.toString.call()的区别