编程语言
首页 > 编程语言> > JavaScript中的原始包装行为

JavaScript中的原始包装行为

作者:互联网

在专业的Javascript for Web Developers一书中,我读到了在尝试访问原始对象的属性和方法时,JavaScript内部使用了原始包装器.这是否意味着每次我尝试访问字符串原语上的length属性时,都会重新计算该值?我的直觉告诉我,因为字符串是固定的,所以它们的长度值存储在某处,只能由包装器访问,但我宁愿确定.

解决方法:

我认为这是真的,当您尝试访问原始值的属性时,会动态创建原始包装器,如下所示:

"foo".length; // behaves as new String('foo').length

不仅在您尝试访问属性时计算长度,而且还创建了一个全新的对象(该对象实际上包含该属性).然后立即丢弃包装.

如果你担心表现,不要.在必须使用原始包装器对象时,很少会出现这种情况,并且它们的性能似乎比使用原始值慢几个数量级(参见test).让口译员关心优化.

标签:ecma262,javascript
来源: https://codeday.me/bug/20190725/1536996.html