// assignments to watched properties via ++ must not be traced var hits = 0; function counter(id, oldval, newval) { hits++; return newval; } (function () { var obj = {x: 0, y: 0}; var a = ['x', 'y']; obj.watch('z', counter); for (var i = 0; i < 14; i++) { obj.watch(a[+(i > 8)], counter); obj.y++; } })(); assertEq(hits, 5);