一.js数据类型可以分为两种 :
第一种:基本类型
(string)字符串 (undefinde)未定义 (null)空 (numbel)数字 (boolean) 布尔 等
第二种:引用类型
数字 (array) function (函数) object(对象)等
二.检测数据类型的4种方法
typeof
instanceof
constructor
object.prototype.tostring.call()
1)数据类型检测方法一:typeof
语法typeof 变量
typeof 1; //'number'
typeof ""; //'string'
typeof true; //'boolean'
typeof undefined; // 'undefined'
typeof null; //'object'
typeof [1, 2, 3]; //'object'
typeof {}; //'object'
typeof function () {}; //'function'
typeof Symbol(); //'symbol'
总结:
typeof 返回的值类型都是字符串符类型
typeof 判断基本数据类型时,除了null 的输出结果为‘object’的字符串
typeof 判断引用类型时,除了函数会输出function 的字符串,其他都是object的字符串
2)数据类型检测方法二:instanceof
instanceof 用来判断两个对象是否属于实例关系,通过这种关系来判断对象是否以属于某一类型。(但不能判断具体属于哪种类型)。
instanceof 可以准确判断引用数据类型,它的原理是:检测构造函数的prototype 属性是否在某个实例对象的原型链上。
instanceof 返回值为布尔值
constructor 基本能检测所有类型(除了null 和undefined),容易被修改,也不能跨iframe
注意:
constructor 是不稳定的,因为开发者可以重写prototype,重写后,原有的 constructor 引用会丢失,需要我们重新指定constructor的引用在没有重新指定时,constructor 会默认为 object
4).数据类型检测方法四:object.prototype.toString.call()
toString()是 Object 的原型方法,调用该方法,默认返回当前对象的 [object type]。其中 type 就是对象的类型。
Object.prototype.toString.call(""); // [object String]
Object.prototype.toString.call(1); // [object Number]
Object.prototype.toString.call(true); // [object Boolean]
Object.prototype.toString.call(Symbol()); // [object Symbol]
Object.prototype.toString.call(undefined); // [object Undefined]
Object.prototype.toString.call(new Function()); // [object Function]
Object.prototype.toString.call(new Date()); // [object Date]
Object.prototype.toString.call([]); // [object Array]
Object.prototype.toString.call({}); // [object Object]
Object.prototype.toString.call(document); // [object HTMLDocument]
Object.prototype.toString.call(window); // [object Window]
原文地址:https://www.jb51.cc/wenti/3283758.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。