今日,我将共享分辨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()。假如你有兴趣,你能查看文档,自身科学研究。
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。