我在MSDN上读到,要提高脚本编写效率,可以使用self来使隐式窗口引用显式.
>你知道这是真的吗?这是否基本上意味着例如,调用self.location比以前简单地调用没有窗口反对的location更有效率?
>由于MSDN文本是指自我而不是窗口,因此仅使用自我会提高性能吗?
根据here,window和self和window.self是同一件事,所以我们使用什么都无关紧要,我只要求确保.
>此外,按照MSDN中的说法,调用window.self应该比调用self具有更高的性能,因为这最后一个是window的属性,因此通过调用window.self我们可以使用显式引用.
谢谢
解决方法:
尽管它非常微优化,但直接属性引用始终比变量查找要快.在写入位置时,将执行以下操作:
>查找在当前作用域中声明的位置,如果找到,则返回并退出.
>将范围层次结构上移一个.
>如果作用域不是全局的,请转到1.如果作用域是全局的,请检查全局作用域中的位置,如果找到则返回,否则抛出未声明的变量错误.
类似的情况是made against using the with
statement以创建对象属性的范围.自我也是一样,这也是window的属性. self是对window的引用,因此window.location应该比window.self.location快.另外,请记住,实现可能会有所不同,因此您的工作量可能因浏览器而异.
正如Pointy指出的那样,大多数开发人员不必担心像这样的微观优化.两者之间的差异为微秒,最终用户完全看不到.
进一步阅读:
> Scope chain of JScript functions-JScript博客