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

