Yes, you object is being overwritten. But fortunately, $.extend
accept boolean as first parameter that allow deep extension.
Just do :
app.settings = $.extend(true, defaults, options); //this will override defaults
app.settings = $.extend(true, {}, defaults, options); //this will not
//app.settings will be the same with both way