Sorry to keep making you tweak this, but I think you want `in` instead of `defined`.  This won't prevent you from calling `addProperty` with `name`, because `defined` only tests the value of `this[propertyName]`, not whether `this` has a property named `propertyName`.

`if (propertyName in this) {`

Probably a good idea to add a test to make sure that it works, too.