Кажется, что AngularJS $window.alert() и Javascript alert() одинаковы. При каких условиях мы должны использовать какой из них? Или вообще разницы нет?
В чем разница между AngularJS $window.alert() и Javascript alert()?
Ответы (3)
Точно так же — глобальные методы в JavaScript (работающие в браузере) — это методы класса window
. $window в AngularJS является псевдонимом для объекта window
.
$window: ссылка на объект окна браузера.
Обратите внимание, что вы можете переопределить $window
для своих тестов, но в обычном коде оба они одинаковы.
Разница в том, что в тестах вы можете имитировать объект $window, чтобы вместо использования реального предупреждения он переходил в console.log или что-то еще. Если ваш код вызывает оповещение напрямую, то нет возможности переопределить реальное оповещение, поэтому в ваших тестах вы увидите всплывающие оповещения всякий раз, когда ваш метод использует оповещение.
Помимо простого тестирования, теоретически вы могли бы даже использовать альтернативный провайдер для $window, у которого была бы более причудливая реализация предупреждений. Представьте, что вы хотите использовать оповещение, построенное на диалоговых окнах начальной загрузки. Использование провайдера $window позволит вам изменить это в одном месте, внедрив новую реализацию, и ни один другой ваш код не изменится.
Вы не увидите разницы в вашем работающем коде (оба работают одинаково), но слабое связывание вашего кода, как это, окупается позже.
Они идентичны, потому что $window === window
, если вы не переопределили это.
$window
, поэтому это ссылка на объект window
.
- person Paul; 24.04.2014
$window
объект для вашего беспорядка. Но @cale_b прав, похоже, они одинаковые
- person ncubica; 24.06.2015