今日,我将共享分辨JavaScript种类的三种方式:typeof,instanceof和constructor。

最先查询全部基本数据类型:

空值(null)未定义(undefined)布尔值(boolean)数据(number)字符串数组(string)目标 (object)标记(symbol, ES6中增加)大整数金额(BigInt, ES2020 引进)

除开目标,大家通称别的基本上种类,最终二种是新引进的前面基本数据类型。

Symbol:是ES6中引进的原始记录种类,意味着一个唯一的值。

BigInt:是ES2020发布的一种新的基本数据类型,用以处理JavaScript中的数据只有做到53个二进制位的难题(JavaScript中的全部数据都储存为64位浮点型,超过这一范畴内的整数金额,没法精确表明。实际主视图:新基本数据类型-bigint。

1 .种类

实例:

console.log(typeof "); // stringconsole.log(typeof 1 ); // numberconsole.log(typeof NaN ); // numberconsole.log(typeof true); // booleanconsole.log(typeof undefined); // undefinedconsole.log(typeof function(){}); // functionconsole.log(typeof isNaN); // functionconsole.log(typeof Symbol()); // symbolconsole.log(typeof 123n); // bigintconsole.log(typeof []); // objectconsole.log(typeof {}); // objectconsole.log(typeof null); // objectconsole.log(typeof new Date()); // objectconsole.log(typeof new RegExp()); // object

针对二维数组,目标,null,時间等数据信息,typeof只有回到object,不可以立即回到相应的种类,必须根据别的方式分辨。

2 .案例

实例:

console.log(12 instanceof Number); // falseconsole.log('22' instanceof String); // falseconsole.log(true instanceof Boolean); // falseconsole.log(null instanceof Object); // falseconsole.log(undefined instanceof Object); // falseconsole.log(function a() {} instanceof Function); // trueconsole.log([] instanceof Array); // trueconsole.log({a: 1} instanceof Object); // trueconsole.log(new Date() instanceof Date); // true

简易而言,分辨一些数据信息是不是构造方法的案例,如果是,回到true要不是,回到false。

在更多方面上,instanceof右边的原形能不能在instanceof左边数据信息的_ prototype _ prototype链中寻找,是一个解析xml的全过程。发觉是确实。

3 .构造器

实例:

console.log('22'.constructor === String) // trueconsole.log(true.constructor === Boolean) // trueconsole.log([].constructor === Array) // trueconsole.log(document.constructor === HTMLDocument) // trueconsole.log(window.constructor === Window) // trueconsole.log(new Number(22).constructor === Number) // trueconsole.log(new Function().constructor === Function) // trueconsole.log(new Date().constructor === Date) // trueconsole.log(new RegExp().constructor === RegExp) // trueconsole.log(new Error().constructor === Error) // true

构造方法追踪目标的出生地点,这代表着您能够了解哪一个构造方法造成了一个目标。

实际上,当建立构造方法时,它将在其原形上建立一个构造方法特性,该特性偏向涵数自身。建立案例时,将承继其构造方法。嗯(表明彷徨等)...构造方法是案例的种类。

留意:null和undefined不当作构造方法存有,这两大类数据信息必须用别的方法分辨。

结果:实际上也有此外一个方式:Object.prototype.toString.call()。假如你有兴趣,你能查看文档,自身科学研究。

评论(0条)

刀客源码 游客评论