Add option to exclude function properties when encoding objects #78
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The behavior of
JSON.stringify
is to exclude properties on an object that store a function:Current behavior of
msgpack-lite
:Behavior this PR introduces - excluding functions is the new default:
Justification
The behavior of JSON is convenient for me, because when prototyping ideas, I often serialize whole ES6 class instances without explicitly picking properties (I'm lazy).
msgpack-lite
already excludes the class prototype's functions since it usesObject.keys
to encode objects, but functions set as properties on the object (like functions that are bound using the common idiom in the constructor) will remain.boundFunc
would be sent over the wire asnull
and is of no benefit.That said, I realize someone out there might have actually added a custom encoder for functions, so excluding them by default is maybe not the right solution. 100% open to discussing and making any adjustments necessary.
An alternative idea may be a codec option which allows you to exclude certain types from serialization.