js数据类型之判断

2019-10-12  本文已影响0人  月下吴刚_c8c7

JS分两种数据类型:zhufeng666

Number、String、Boolean、Null、 Undefined、Symbol(ES6),这些类型可以直接操作保存在变量中的实际值。

Object(Object 类型、Array 类型、Date 类型、RegExp 类型、Function 类型、error 等)

判断数据类型的四种通用方式

"number","string","boolean","undefined","function","object"
1 instanceof Number  ====>false
new Number(1) instanceof Number  ====>true
function Fn(){定义实例的私有属性}
Fn.prototype = 父类;(如 [])
var f = new Fn()   // f此时为一个对象,f就会有自己的私有属性,还有父类的属性
则有 : f.__proto__ --->Fn.prototype(即arr) --->Array.prototype --> Object.prototype 

/^s/.constructor === RegExp ===>true
/^s/.constructor === Object   ===>false

返回 "[object xxx的类型]" ,是最准确最常用的方式,对基础类型和引用类型都有效,不受原型改变的影响

Object.prototype.toString.call([ ]) === "[object Array]";   // true

数组的单独判断

Array.isArray([]);  // true
Array.isArray([1]); // true
Array.isArray(new Array());
// 鲜为人知的事实:其实 Array.prototype 也是一个数组。
Array.isArray(Array.prototype); 

// 下面的函数调用都返回 false
Array.isArray();
Array.isArray({});
Array.isArray(null);
Array.isArray(undefined);
Array.isArray(17);
Array.isArray('Array');
Array.isArray(true);
Array.isArray(false);
Array.isArray({ __proto__: Array.prototype });
======================================================================

附记

不带参数,将number 转为 string ,(128).toString() ----> '128'
带参数,转为进制的数后再转为字符串 ,(128).toString(8) ---> '156725', 将128转为8进制
对于Number,RegExp,String,Date,Function,Array的tiString()都是仅仅将当前数据类型转为字符串;
对于Math(使用的是Object原型上的toString),Object的toString()会得到当前数据的类型 ----> "[object 类型]"

div.proto --->HTMLDivElement.prototype --> HTMLElement.prototype --> Element.prototype --> Node.proototype --> EventTarget.prototype --> Object.prototype

null 和undefined 所属的类分别是 Null 和 Undefined,但是浏览器将这两个类保护起来,不允许访问,访问就报错

上一篇 下一篇

猜你喜欢

热点阅读