如何在JavaScript中直接访问[[PrimitiveValue]]值

时间:2016-05-16 00:16:34

标签: javascript

有没有办法直接访问JavaScript对象类型的[[PrimitiveValue]],例如字符串或数字?

2 个答案:

答案 0 :(得分:6)

  

有没有办法直接访问JavaScript对象类型[[PrimitiveValue]],例如StringNumber

不,没有。

当在需要基元的上下文中使用对象时,由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)是微不足道的。在大多数情况下,它可能会自动完成。