JSON has no representation for undefined or functions, so when JSON.stringify encounters them as object property values it silently omits those properties entirely. Only c, with the JSON-serializable value 1, remains. (In arrays, by contrast, undefined and functions become null rather than being dropped.)