根据这个答案'对象是空的吗?' :
// Speed up calls to hasOwnProperty
var hasOwnProperty = Object.prototype.hasOwnProperty;
Run Code Online (Sandbox Code Playgroud)
我在小型JavaScript库中看到过类似的几种实现,例如:
var slice = Array.prototype.slice;
//or
function slice(collection) {
return Array.prototype.slice.call(collection);
}
Run Code Online (Sandbox Code Playgroud)
我做了一个快速的jsperf测试这种事情,缓存看起来总体上比不缓存更快,但我的测试可能有缺陷.
(我使用'cache'这个词来表示将方法存储在变量中.)
这个问题的上下文是开发人员需要多次调用本机方法,以及可观察到的差异.
缓存本机方法是否会阻止引擎在每次调用方法时都必须查看该方法的对象内部,从而在开发人员需要多次调用相同的本机方法时,使缓存成为调用本机方法的更快方法?
当您在库中使用Array.prototype.slice大量内容时,创建一个保存该函数的变量 ( var slice = Array.prototype.slice;) 是有意义的,因为该变量可以通过 JavaScript 缩小器进行缩小,否则无法缩小。
将函数分配给变量还可以避免遍历对象的原型链,这可能会导致性能稍好一些。
\n\n请注意,这是微优化,您(一般来说)不应该过多关注 \xe2\x80\x93 ,将其留给现代 JavaScript 引擎。
\n| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |