有没有办法直接访问JavaScript对象类型的[[PrimitiveValue]],例如字符串或数字?
答案 0 :(得分:6)
有没有办法直接访问JavaScript对象类型
[[PrimitiveValue]]
,例如String
或Number
?
不,没有。
当在需要基元的上下文中使用对象时,由JS获取原始值,并且通过在对象上调用valueOf
方法来实现。如评论中所述,需要基元的上下文包括+numberObj
,'' + stringObj
和“施放”来自Number(numberObj)
。请注意,诸如Object(false) && true
之类的结构会将不强制转换为基元,而if (Object(false))
也不会(因此成功)。
注意,valueOf
也可以被覆盖,在这种情况下,不存在可以或将要检索基础原始值的情况。
答案 1 :(得分:5)
在某种意义上没有,因为就ES6标准而言,[[Primitive Value]]是内部转换算法,而不是结果,需要处理输入值和指定返回值的首选类型的可选参数。该算法通常用于自动类型转换,并不总是为给定的输入返回相同的数据类型。
[[Primitive Value]]算法可分为标准和异国情调。标准方法是默认首选结果类型为'number'(如果未提供)。诸如为Date Objects实现的异类算法为转换结果提供了自己的默认值。
当然,如果需要,将String对象转换为字符串数据类型(例如“”+ strObj)或将Number对象转换为数字数据类型(例如+ numObj)是微不足道的。在大多数情况下,它可能会自动完成。