Le 15/01/2012 21:23, David Bruant a écrit : > ----- > function C(){ > this.length = 3; > } > > function f(a,b){} > > C.prototype = f; > > var c = new C(); > console.log(c.length); > ----- > For this code, ECMAScript 5 says: > When doing "new C()", |this| is assigned "C.prototype" which is the > function f (it has a non-writable, non-configurable "length" property > with 2 as value). > During "this.length = 3;", [[CanPut]] should return > "inherited.[[Writable]]" (step 8.b). In this case, it should return > false and log 2 So in the "2", we have: IE8, Firefox 9->12, Opera 11.60, 12
and on the side of "3", we have: Chrome 16, Safari 5 and Safari 5.1 Anyway, it seems that the divergence toward this aspect of the spec was probably there even before ES5. If no one complained about it for years it seems to indicate that there is room to change the spec without breaking content, since content does not seem to rely on the spec behavior, even if it was there since ES1. David
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss