Since $onChanges uses a shallow watch, there may be unexpected behavior when looking for object changes. See how bound objects only trigger $onChange if their reference changes.
AngularJS 1.4.8, HTML, CSS, JavaScript
No-Library (pure JS), HTML, CSS, JavaScript
AngularJS 1.2.1, HTML, CSS, JavaScript
AngularJS 1.1.1, HTML, CSS, JavaScript