12 ways to iterate object keys in JavaScript and their differences vis-a-vis enumerability & the prototype chain https://developer.mozilla.org/en-US/docs/Web/JavaScript/Enumerability_and_ownership_of_properties