代码之家  ›  专栏  ›  技术社区  ›  Marco Demaio

Javascript使用显式self/window对象来提高性能

  •  3
  • Marco Demaio  · 技术社区  · 16 年前

    我继续读下去 MSDN self 使隐式窗口引用显式。

    1. 你知道这是不是真的吗?这基本上意味着 self.location 比简单地打电话更有效率吗 location window 以前的项目?

    2. 因为MSDN文本是指 而不是 窗口 ,是否只有使用 ? 根据 here 和 自己 window.self 都是一样的,所以我们用什么都不重要,我只是想确定一下。

    3. 此外,请遵循MSDN中的说明 应该比打电话更有效 自己 所以打电话 我们使用显式ref。

    谢谢

    2 回复  |  直到 9 年前
        1
  •  1
  •   Andy E    16 年前

    尽管这在很大程度上是一个微观优化,但直接属性引用总是比变量查找快。当你写作的时候 location ,执行如下操作:

    1. 寻找 位置 在当前范围中声明,如果找到则返回并退出。
    2. 将范围层次结构上移一级。
    3. 如果作用域不是全局的,请转到1。如果作用域是全局的,请检查 位置

    类似的情况是 made against using the with statement self ,这也是 window 自己 窗口 ,所以 window.location window.self.location . 另外,请记住实现可能不同,因此不同浏览器的里程数可能不同。

    就像尖尖的“尖尖的”指出, 开发人员不必担心这样的微优化。区别是微秒级的,最终用户完全看不到。

    进一步阅读:

        2
  •  2
  •   Pointy    16 年前

    (function(window, undefined) {
      // your code, thousands of lines of sheer beauty
    })(this);
    

    这将为您提供一个对“window”的本地引用,以及一个可靠的“未定义”变量来引导。

    为什么这是浪费时间?因为对于任何普通代码来说 最多 算法 你用它来做任何你正在编写的代码都是合适的,让Javascript解释器/JIT开发人员为你减少这些毫秒。如果你沉迷于这样的事情,你很可能最终得到运行的代码 更慢的 因为你会做一些奇怪的事情,最终没有被解释器优化。