({-6ren">
gpt4 book ai didi

javascript - 在 javascript 中将基元包装为对象的开销是多少?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:25:57 26 4
gpt4 key购买 nike

包装原始 JavaScript 值以使其成为对象会产生哪些开销(如果有的话)?

例如:

> var x = Object(12);
undefined
> typeof x
"object"
> ({}).toString.call(x);
"[object Number]"

对比

> var y = 12;
undefined
> typeof y
"number"
> ({}).toString.call(y);
"[object Number]"

我提问的原因:我正在使用 GWT 代码在 JavaScript 和 Java 代码(稍后编译成 Javascript 代码)之间转换值。由于 Java 非常关心类型并且 GWT JSNI(互操作方法)支持原语和对象,我想知道为什么不只返回“盒装”原语(例如 Object(12) 是 12 的盒装版本)。

答案如我所料——速度。我没有意识到它会如此严重,但如果可以或付出严重的性能代价,显然要避免使用盒装 Javascript 原语。 (需要注意的是,方法调用的开销会像 Jan 提到的那样颠倒过来)

最佳答案

var x = Object(12); 似乎比 var x = 12;

慢 97%

http://jsperf.com/object-wrap-number-overhead

但是,如果您打算在数字上调用方法,则差异要小得多,但在数字上调用 Object() 仍然更快。


但真正的问题是您为什么要这样做?您可以在没有这种显式转换的情况下调用数字方法。

var x = 12.1234;
x.toFixed(2); // "12.12"

关于javascript - 在 javascript 中将基元包装为对象的开销是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16700799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com