If for example, I were to use a can.compute to return foo.attr('bar.a.b.c'), and either of bar.a.b where to change, this would not consistently trigger a change event unless I use foo.attr('bar').attr('a').attr('b').attr('c');
Nested object getters should listen to events of each object.