Javascript原始类型和相应的对象
在Javascript中,并非每个数据都是对象。存在一些原始类型,如字符串,数字和布尔值,它们不是对象。对于每种类型,都存在一个构造函数,它输出一个具有相似行为的对象:
Number
,String
和Boolean
。为了混淆问题,实际上可以在原始类型上调用方法 - 它们将在此操作期间转换为相应的对象,然后转换回来。例如,人们可以做到
var a = 4.1324;
a.toFixed(1) // outputs 4.1
然而,如果您尝试将基本类型和对象与严格相等进行比较,则会出现差异
var a = new Number(4);
var b = 4;
a === b; // False!!!
typeof a; // 'object'
typeof b; // 'number'
实际上,一个人试图比较对象,但结果却是不同的:
var a = new Number(4);
var b = new Number(4);
a === b; // False!!!
(从概念的角度来看,我有点理解这种区别。对象可以有额外的属性,因此除非它们实际上是相同的,否则不应该相等。所以如果我们想要4 === 4
,我们需要使用一个不是但是,任何充分动态的编程语言都会遇到这种困境,但Javscript是我所知道的唯一一种有两种类型 - 一种是对象的而一种不是 - 用于数字或字符串。)
为数字,字符串和布尔值保留两个单独的表示形式有什么好处?在什么情况下,人们需要区分原始类型和对象?
没有找到相关结果
已邀请:
2 个回复
膏焦凑
而
例如:
但
你可以在这里阅读更多关于coersion的信息:http://webreflection.blogspot.com/2010/10/javascript-coercion-demystified.html
泉秘胁