在 Web开发者专业Javascript 一书中,我读到了在尝试访问原始对象的属性和方法时,JavaScript内部使用了原始包装器。这是否意味着每次我尝试访问字符串原语上的length属性时,都会重新计算该值?我的直觉告诉我,因为字符串是固定的,所以它们的长度值存储在某处,只能由包装器访问,但我更确定。
答案 0 :(得分:5)
答案 1 :(得分:3)
我认为这是真的,当您尝试访问原始值的属性时,会动态创建原始包装器,如下所示:
"foo".length; // behaves as new String('foo').length
不仅在您尝试访问该属性时计算length
,而且还创建了一个全新的对象(该对象实际上包含该属性)。然后立即丢弃包装。
如果你担心表现,不要。在必须使用原始包装器对象的情况下很少见,并且它们的性能似乎比使用原始值慢几个数量级(参见test)。让口译员关心优化。