Skip to content

Instantly share code, notes, and snippets.

@cowboy
Created September 19, 2012 13:45
Show Gist options
  • Save cowboy/3749767 to your computer and use it in GitHub Desktop.
Save cowboy/3749767 to your computer and use it in GitHub Desktop.
JavaScript: like JSON.stringify but handles functions, good for creating arbitrary .js objects?
var stringify = function(obj, prop) {
var placeholder = '____PLACEHOLDER____';
var fns = [];
var json = JSON.stringify(obj, function(key, value) {
if (typeof value === 'function') {
fns.push(value);
return placeholder;
}
return value;
}, 2);
json = json.replace(new RegExp('"' + placeholder + '"', 'g'), function(_) {
return fns.shift();
});
return 'this["' + prop + '"] = ' + json + ';';
};
var foo = {
a: function() { return 'a'; },
b: function() { return 'b'; },
'bar.baz': {
'omg ponies!!': function() { return 'c'; }
}
};
console.log(stringify(foo, 'foo'));
// this["foo"] = {
// "a": function () { return 'a'; },
// "b": function () { return 'b'; },
// "bar.baz": {
// "omg ponies!!": function () { return 'c'; }
// }
// };
@jeffreesta
Copy link

This custom stringify function can be handy when you need to serialize JavaScript objects that include functions into strings for storage or transmission, while still retaining the ability to execute that's not my neighbor those functions after deserialization.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment