似乎AngularJS $ window.alert()和Javascript alert()是相同的。在什么条件下我们应该使用哪一个?或者根本没有区别?
答案 0 :(得分:5)
完全相同的是 - JavaScript中的全局方法(在浏览器中运行)是window
的方法。 AngularJS'$window是window
对象的别名。
$ window:对浏览器窗口对象的引用。
请注意,您可以为测试覆盖$window
,但在常规代码中两者都相同。
答案 1 :(得分:3)
不同之处在于,在测试中,您可以模拟$ window对象,以便不使用真实警报,而是将其存根到console.log或其他内容。如果您的代码直接调用alert,则无法覆盖真实警报,因此在测试中,只要您的方法使用警报,您就会看到警报弹出。
除了测试之外,理论上你甚至可以使用$ window的替代提供程序,它具有额外的花哨警报实现。想象一下,如果您想使用基于引导程序对话框构建的警报。使用$ window提供程序将允许您通过注入新实现在一个地方更改它,并且您的其他代码都不会更改。
您不会看到正在运行的代码有所不同(两者的执行方式相同),但松散地耦合您的代码会在以后获得回报。
答案 2 :(得分:1)
它们是相同的,因为$window === window
,除非你已经覆盖了它。