JSON.stringify and Object.keys produce different results on same object
<p>I have an issue that isn't making any sense to me.  I was wondering if any of you could help.  </p>

<p>I have a data source object which I use to access REST data through.  All the complex asynchronous stuff works fine, but I've come completely unstuck on what should be the very simple task of passing options into the configuration of the data sources.  </p>

<p>At the moment, I have this function: </p>

<pre><code>    object.addSourceOption = function( model, optKey, optVal ){
        if(!_.has(config.sources, model) ){ return this; }
        else{ 
            var options = config.sources[model]["options"];
            options[optKey] = optVal;
            console.log(options[optKey]);
            //options = JSON.parse( JSON.stringify( ) );                
            console.log( "Source Option: " + optKey + ": " + optVal
                         +" added for model: " + model );
            var debugString = JSON.stringify(options);
            console.log(debugString);
            console.log( Object.keys(options));
        }
        return this;
    };
</code></pre>

<p>This function is being called and it's being called with good values as far as I can see.  Here's an example of some debug output (in this case, the key value is "post_get" and the value is a function, which is printed):</p>

<pre><code>function (element){

    }
restData2.js:189 Source Option: post_get: function (element){

    } added for model: Contacts
restData2.js:191 {}
restData2.js:192 ["post_get"]
</code></pre>

<p>I don't understand why JSON.stringify and Objects.keys produce different results.  I don't understand which to trust to debug the code I'm using, or what could possibly be happening behind the scenes to make the two functions disagree about the code I've written.</p>