2013-11-21 31 views
2

在Mozilla的文档,也有在的定时器功能前,一些与window.不写一些例子:是否需要在窗口对象前面加上setTimeout和setInterval?

function delayedAlert() { 
    timeoutID = window.setTimeout(slowAlert, 2000); 
}... 

setTimeout(myArray.myMethod, 1000);... 

window.setInterval = function (vCallback, nDelay... 

我一直没有window.在前面没有任何问题写到目前为止我的代码。我想知道是否有必要的情况。

+0

不,因为'window'是全局命名空间。 –

+0

噢,我看到你已经删除了你的另一个问题,无论哪种方式,还有一种方法来分配和执行一个函数内联,但它也相当丑陋:'(o.func = function(){})。call(o);' ([小提琴](http://jsfiddle.net/rhQ2W/)) –

回答

2

如果..

  1. 有一个在与给定名称(xwindow),和范围的任何其他标识符;
  2. 没有可解析给定名称的with绑定(xwindow),并且;
  3. 的给定名称(x)是全局范围window

..然后window.xx是等价的特性。

对于标准的规定全球特性/功能(必须在一个健全的网络浏览器环境下的全局范围中),我不包括window。我也小心不要影响这些名字。

+0

我明白了..这很清楚。谢谢! –

+0

@QuestionOverflow然而,当* no *这样的绑定时,要意识到'window.y'和'y'的行为有点不同:一个未绑定的标识符'y'可以抛出一个ReferenceError,而一个不存在的属性评估为'undefined'。 – user2864740

+0

如在后者会触发错误?好了,我懂了。谢谢 :) –

1

不,您不必添加它,因为根对象是window,所以“窗口”部分是隐含的。但是,人们继续添加它,因为它表示内置的而不是用户定义的功能。