They can be over-ridden by Object.defineOwnProperty.  they cannot be 
over-ridden by assignment.  See ES5 [[CanPut]] specification 8.12.4. step 8.b

On Feb 16, 2011, at 5:32 PM, Irakli Gozalishvili wrote:

> Thanks for the reply Allen,
> 
> I was under the impression that inherited properties can be overridden, 
> regardless of their write-ability on the __proto__. 
> 
> Also as far as I understand freeze will make properties including constructor 
> non-confugurable, will I still be able  to override such properties using 
> Object.defineProperty ?
> 
> Also this was simplified example and it's not really possible to do the 
> freeze after. Will try `Object.defineProprety` though.
> 
> Thanks
> --
> Irakli Gozalishvili
> Web: http://www.jeditoolkit.com/
> Address: 29 Rue Saint-Georges, 75009 Paris, France
> 
> 
> On Thu, Feb 17, 2011 at 02:21, Allen Wirfs-Brock <[email protected]> 
> wrote:
> The error looks correct to me. By freezing Type.proto you make all its own 
> properties "read only".  One of those is the constructor that is 
> automatically created on every func.prototype object.  When you assign to 
> object.constructor you are trying to over-ride an inherited read-onoy 
> property.  ECMAScript has never allowed this.  You can say:
>       Object.defineProperty(object,"constructor",{value: function Foo() {}, 
> /* any other attributes you want to set */});
> to over-ride the inherited constructor property.
> Or you can restructure you code so you do the freeze after you do the 
> assignment.
> 
> On Feb 16, 2011, at 5:09 PM, Irakli Gozalishvili wrote:
> 
>> Hi,
>> 
>> I've run into one issue and even after reading ES5 specs several times it's 
>> not clear to me what should be an expected behavior:
>> 
>> Currently on Firefox nightly following code:
>> 
>> (function() {
>> "use strict";
>> 
>> function Type() {}
>> Object.freeze(Type.prototype);
>> var object = Object.create(Type.prototype);
>> object.constructor = function Foo() {};
>> 
>> return object
>> })();
>> 
>> throws TypeError: object.constructor is read-only
>> while on chrome 
>> 
>> it returns object with constructor Foo
>> 
>> I would like to know what is an expected behavior to fill a bug to an 
>> appropriate project.
>> 
>> 
>> Thanks!
>> --
>> Irakli Gozalishvili
>> Web: http://www.jeditoolkit.com/
>> Address: 29 Rue Saint-Georges, 75009 Paris, France
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
> 
> 

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to