書籍ProfessionalJavascriptfor Web Developersで、プリミティブラッパーは、プリミティブオブジェクトのプロパティとメソッドにアクセスしようとするときにJavaScriptによって内部的に使用されることを読みました。これは、文字列プリミティブの長さプロパティにアクセスしようとするたびに、値が再計算されることを意味しますか?私の腸は、文字列が固定されているため、その長さの値はどこかに格納され、ラッパーによってのみアクセスされると言っていますが、私はむしろ確信しています。
質問する
159 次
2 に答える
3
これは本当だと思います。次のように、プリミティブ値のプロパティにアクセスしようとすると、プリミティブラッパーがその場で作成されます。
"foo".length; // behaves as new String('foo').length
プロパティにアクセスしようとした瞬間に計算されるだけlength
でなく、まったく新しいオブジェクトも作成されます(そのオブジェクトが実際にプロパティを含むものです)。その後、ラッパーはすぐに破棄されます。
パフォーマンスが気になる場合は、気にしないでください。プリミティブラッパーオブジェクトを使用する必要がある場合はめったになく、そのパフォーマンスは、プリミティブ値を使用する場合よりも桁違いに遅いようです(テストを参照)。通訳に最適化を気にかけてもらいましょう。
于 2012-10-23T17:06:40.583 に答える