> Hi Richard, > > you are right of course, my bad. You would have to re-assign the prototype > of the old class, which gets lost when you re-assign X. Something like > > var X= OpenLayers.Class({ > initialize:function() { this._p= "A.initialize"; > OpenLayers.Console.info(this._p); }, > pa:"PA", > p_:null, > ma:function() { OpenLayers.Console.info("A.ma="+this.pa); } > }); > xProto = X.prototype; > xProto.initialize = function() { this.p_= "A.initialize-new"; > OpenLayers.Console.info(this.p_); } > X = xProto.initialize; >
It does still not make the trick (same exception arisen in both 2.10 et 2.11) > Andreas. > > On Jul 24, 2011, at 23:05 , RICHARD Didier wrote: > >> >>> Hey Schuyler, >>> >>> I'm not concerned about breaking backwards compatibility here. We never >>> encouraged people to override the initialize method by re-assigning it >>> on >>> the prototype, and we always advertised the initialize method as >>> constructor. With 2.11, finally, the initialize method is a real >>> constructor, i.e. >>> >>> X.prototype.initialize === X. >>> >>> So instead of >>> >>> X.prototype.initialize = function() { ... } >>> >>> which we never encouraged people to do anyway, people could now do >>> >>> X = X.prototype.initialize = function() { ... } >>> >> >> Thanks for remining this, but what about the new paradigm. Doing : >> >> X= OpenLayers.Class({ >> initialize:function() { this._p= "A.initialize"; >> OpenLayers.Console.info(this._p); }, >> pa:"PA", >> p_:null, >> ma:function() { OpenLayers.Console.info("A.ma="+this.pa); } >> }); >> X = X.prototype.initialize = function() { this.p_= "A.initialize-new"; >> OpenLayers.Console.info(this.p_); } >> try { >> var x1= new X(); >> OpenLayers.Console.assert((x1 instanceof X)); >> OpenLayers.Console.assert((x1.p_=="A.initialize-new")); >> x1.ma(); >> } catch(ex) { >> OpenLayers.Console.warn(ex); >> } >> >> gives : >> TypeError: x1.ma is not a function >> >> It does not although work with 2.10 (same exception). >> Did I miss something ? >> >> didier >> >>> Andreas. >>> >>> On Jul 24, 2011, at 22:07 , Schuyler Erle wrote: >>> >>>> >>>> On Jul 24, 2011, at 4:43 AM, RICHARD Didier wrote: >>>> >>>>> With 2.10, overloading constructors was as simple as overwriting the >>>>> initialize prototype : >>>>> >>>>> X.prototype.initialize= function () { ...} >>>>> >>>>> In 2.11-RC1, it breaks as the new prototype is not the constructor ! >>>>> ... >>>>> >>>>> BTW, as this new OpenLayers.Class is a major change in OpenLayers, >>>>> don't >>>>> you thing it is more a 3.0 feature than a 2.x ? >>>> >>>> I confess I'm a little concerned about this... Are we breaking >>>> backwards >>>> compatibility with such a change? >>>> >>>> SDE_______________________________________________ >>>> Dev mailing list >>>> d...@lists.osgeo.org >>>> http://lists.osgeo.org/mailman/listinfo/openlayers-dev >>> >>> >>> >>> -- >>> Andreas Hocevar >>> OpenGeo - http://opengeo.org/ >>> Expert service straight from the developers. >>> >>> >> >> >> -- >> RICHARD Didier - Chef du pôle technique du Géoportail >> 2/4, avenue Pasteur - 94165 Saint Mandé Cedex >> Tél : +33 (0) 1 43 98 83 23 >> _______________________________________________ >> Dev mailing list >> d...@lists.osgeo.org >> http://lists.osgeo.org/mailman/listinfo/openlayers-dev > > -- > Andreas Hocevar > OpenGeo - http://opengeo.org/ > Expert service straight from the developers. > > -- RICHARD Didier - Chef du pôle technique du Géoportail 2/4, avenue Pasteur - 94165 Saint Mandé Cedex Tél : +33 (0) 1 43 98 83 23 _______________________________________________ Dev mailing list d...@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/openlayers-dev