Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams Try deleting par.a , it returns true and actually deletes the property, but it also deletes ch.a . Why? Because using Object.create you just create a reference to the object, not a new copy. Here is a very good article about delete : perfectionkills.com/understanding-delete -- you can read the behaviour of Object.create from here - MDN Niccolò Campolungo Sep 7, 2013 at 17:44

Throws in strict mode if the property is an own non-configurable property (returns false in non-strict). Returns true in all other cases. ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete )

delete ch.a tries to locate the property a in ch , fails (since ch doesn't have such own property), does nothing and happily returns true . If you wrote delete ch.foobar , the result would be the same. If however, you tried a non-configurable property (e.g. delete ch.__proto__ ), the result would be false .

I think ch has property ch.a (1) and in this case it is inhereted, and I know it. But I just expect if I don't know if property is inhereted to get false if it didn't deleted. Andrew Sep 7, 2013 at 18:12 @ruan65: delete only returns false if you're not allowed to delete a property, and true in all other cases - no matter if a property was actually deleted or not. georg Sep 7, 2013 at 20:36 this was poor implementation/specification - it should THROW if you are not allowed to delete the property, return false, if the property does not exist, and return true if the property exists. To be even more precise, in strict mode, it should throw if it's non-configurable, o/w return false if it's non-configurable. Alexander Mills May 26, 2018 at 21:07

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question . Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers .