Just a personal opinion here... but I prefer the "dog" style notation for long-term maintainability.
All "dog" code stays contained within the dog definition. Imagine it's 5 years later and "the next guy" is instructed to remove the hasTail property. No matter how many other objects/properties/etc. were defined between now and then, he'll find it within the dog definition.
For comparison... imagine it's 5 years later and "the next guy" is instructed to remove the hasTail property from "cat". He has to scan/grep/ctl+f the animals.js file for hasTail and hope he removes the correct one.