<div class="gmail_quote">[+Allen]</div><div class="gmail_quote"><br></div><div class="gmail_quote">2013/3/13 Nathan Wall <span dir="ltr"><<a href="mailto:nathan.wall@live.com" target="_blank">nathan.wall@live.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">However, as a matter of principle, my argument is that `Object.getOwnPropertyDescriptor` should, at the bare minimum, return a descriptor that can be known to work in `Object.defineProperty`.  If `Object.defineProperty` doesn't accept it, then you `getOwnPropertyDescriptor` didn't really give me a valid descriptor.<br>

<br>
I think that this behavior (1) limits the creativity of developers to define properties like `Object.prototype.get`, (2) is a potential stumbling block, (3) has no real benefit -- really, there's not anything positive about this behavior, and (4) forces developers who want to support `Object.prototype.get` to add an extra layer of cleaning before using `defineProperty`.</blockquote>
<div><br></div><div>While the monkey-patching of Object.prototype ("don't do that!") is still the culprit, I agree that it would have been better if defineProperty looked only at "own" properties of the descriptor. I almost always think of descriptors as "records" rather than "objects". Similarly, perhaps Object.getOwnPropertyDescriptor should have returned descriptors whose [[prototype]] was null.</div>
<div><br></div><div>It's true that Reflect.getOwnPropertyDescriptor and Reflect.defineProperty give us a chance to fix this. I'm just worried that these differences will bite developers that will assume that these methods are identical to the Object.* versions.</div>
<div><br></div><div>I'd like to hear Allen's opinion on this issue.</div><div><br></div><div>Cheers,</div><div>Tom</div></div>