AngularJS $ window.alert()和Javascript alert()有什么区别?

时间:2014-04-24 02:47:44

标签: javascript angularjs alert

似乎AngularJS $ window.alert()和Javascript alert()是相同的。在什么条件下我们应该使用哪一个?或者根本没有区别?

3 个答案:

答案 0 :(得分:5)

完全相同的是 - JavaScript中的全局方法(在浏览器中运行)是window的方法。 AngularJS'$windowwindow对象的别名。

  

$ window:对浏览器窗口对象的引用。

请注意,您可以为测试覆盖$window,但在常规代码中两者都相同。

答案 1 :(得分:3)

不同之处在于,在测试中,您可以模拟$ window对象,以便不使用真实警报,而是将其存根到console.log或其他内容。如果您的代码直接调用alert,则无法覆盖真实警报,因此在测试中,只要您的方法使用警报,您就会看到警报弹出。

除了测试之外,理论上你甚至可以使用$ window的替代提供程序,它具有额外的花哨警报实现。想象一下,如果您想使用基于引导程序对话框构建的警报。使用$ window提供程序将允许您通过注入新实现在一个地方更改它,并且您的其他代码都不会更改。

您不会看到正在运行的代码有所不同(两者的执行方式相同),但松散地耦合您的代码会在以后获得回报。

答案 2 :(得分:1)

它们是相同的,因为$window === window,除非你已经覆盖了它。