不要对字符串、数字和布尔文字可以被视为具有属性的对象这一事实感到困惑(例如,true.toString())。当这些基元值通过尝试访问其属性而被视为对象时,JavaScript 将从基元的关联构造函数创建一个包装器对象,以便可以访问包装器对象的属性和方法。
一旦访问了属性,包装器对象就会被丢弃。这种转换允许我们编写代码,使其看起来好像原始值实际上是一个对象。说实话,当它在代码中被视为对象时,JavaScript 会将其转换为对象,以便属性访问可以工作,然后在返回值后将其转换回原始值。这里需要注意的关键是正在发生的事情,而 JavaScript 正在幕后为您做这件事。
原始值样本
这里有一些示例来演示我正在谈论的内容:
字符串示例:sample56.html
[removed] // String object treated like an object. var stringObject = new String('foo'); console.log(stringObject.length); // Logs 3. console.log(stringObject['length']); // Logs 3. // String literal/primitive converted to an object when treated as an object. var stringLiteral = 'foo'; console.log(stringLiteral.length); // Logs 3. console.log(stringLiteral['length']); // Logs 3. console.log('bar'.length); // Logs 3. console.log('bar'['length']); // Logs 3. [removed]登录后复制
数字示例:sample57.html
[removed] // Number object treated like an object. var numberObject = new Number(1.10023); console.log(numberObject.toFixed()); // Logs 1. console.log(numberObject['toFixed']()); // Logs 1. // Number literal/primitive converted to an object when treated as an object. var numberLiteral = 1.10023; console.log(numberLiteral.toFixed()); // Logs 1. console.log(numberLiteral['toFixed']()); // Logs 1. console.log((1234).toString()); // Logs '1234'. console.log(1234['toString']()); // Logs '1234'. [removed]登录后复制
布尔示例:sample58.html
[removed] // Boolean object treated like an object. var booleanObject = new Boolean(0); console.log(booleanObject.toString()); // Logs 'false'. console.log(booleanObject['toString']()); // Logs 'false'. // Boolean literal/primitive converted to an object when treated as an object. var booleanLiteral = false; console.log(booleanLiteral.toString()); // Logs 'false'. console.log(booleanLiteral['toString']()); // Logs 'false'. console.log((true).toString()); // Logs 'true'. console.log(true['toString']()); // Logs 'true'. [removed]登录后复制
直接访问原始数字的属性(不存储在变量中)时,必须先计算该数字,然后才能将该值视为对象(例如, (1).toString(); 或1..toString();)。为什么是两个点?第一个点被视为数字小数,而不是用于访问对象属性的运算符。
您通常应该使用原始字符串、数字和布尔值
表示字符串、数字或布尔值的文字/原始值的书写速度更快,并且文字形式更简洁。
因此,您应该使用文字值。此外, typeof 运算符的准确性取决于您创建值的方式(文字与构造函数调用)。如果您创建字符串、数字或布尔对象,则 typeof 运算符会将类型报告为对象。如果您使用文字,则 typeof 运算符将返回实际值类型的字符串名称(例如,typeof 'foo' // returns 'string')。
我在下面的代码中演示了这一事实。
示例:sample59.html
[removed] // String, number, and Boolean objects. console.log(typeof new String('foo')); // Logs 'object'. console.log(typeof new Number(1)); // Logs 'object'. console.log(typeof new Boolean(true)); // Logs 'object'. // String, number, and Boolean literals/primitives. console.log(typeof 'foo'); // Logs 'string'. console.log(typeof 1); // Logs 'number'. console.log(typeof true); // Logs 'boolean'. [removed]登录后复制
结论
如果您的程序依赖 typeof 运算符来根据这些基本类型识别字符串、数字或布尔值,则应避免使用 String、Number 和 Boolean 构造函数。
以上就是使用基本字符串、数字和布尔值的详细内容,更多请关注慧达安全导航其它相关文章!
免责 声明
1、本网站名称:慧达安全导航
2、本站永久网址:https//www.huida178.com/
3、本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
4、本站所有资源的属示图片和信息不代表本站的立场!本站只是储蓄平台及搬运
5、下载者禁止在服务器和虚拟机下进行搭建运营,本站所有资源不支持联网运行!只允许调试,参考和研究!!!!
6、未经原版权作者许可禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
7、为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
8.若资源侵犯了您的合法权益,请持 您的版权证书和相关原作品信息来信通知我们!QQ:1247526623我们会及时删除,给您带来的不便,我们深表歉意!
9、如下载链接失效、广告或者压缩包问题请联系站长处理
10、如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
11、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需
12、因源码具有可复制性,一经赞助,不得以任何形式退款。
13、本文内容由网友自发贡献和站长收集,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系1247526623@qq.com
转载请注明出处: 慧达安全导航 » 使用基本字符串、数字和布尔值
发表评论 取消回复