- From: <bugzilla@jessica.w3.org>
- Date: Wed, 20 Jun 2012 21:11:04 +0000
- To: public-script-coord@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=17560
Boris Zbarsky <bzbarsky@mit.edu> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bzbarsky@mit.edu
--- Comment #1 from Boris Zbarsky <bzbarsky@mit.edu> 2012-06-20 21:11:03 UTC ---
This is perfectly well defined
http://dev.w3.org/2006/webapi/WebIDL/#es-attributes which says that the
property descriptor looks like this:
{ [[Get]]: G, [[Set]]: S, [[Enumerable]]: true, [[Configurable]]:
configurable }
where S is undefined if the attribute is readonly.
So when you're setting a readonly attribute, you end up in ECMA-262 section
8.12.5, call [[CanPut]] which lands you in 8.12.4, get to step 2,
IsAccessorDescriptor returns true in step 2a, desc.[[Set]] is undefined, so
[[CanPut]] returns false. Back in [[Put]], this means that the set is silently
ignored if "Throw" is false, otherwise a TypeError is thrown.
If you care to unwind some more, basically in strict mode TypeError is thrown
an otherwise the set silently does nothing.
> mapped to the ECMAScript ReadOnly property attribute
There is no such thing. There is a [[Writable]] property attribute, but it
only applies to data descriptors, not accessor descriptors. Setting it in an
accessor descriptor is an error.
--
Configure bugmail: https://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
Received on Wednesday, 20 June 2012 21:11:38 UTC