[OpenLayers-Dev] 2.10 and 2.11-RC1 OpenLayers.Class behavior changes

RICHARD Didier didier.richard at ign.fr
Sun Jul 24 17:05:23 EDT 2011


> 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
>> Dev at 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


More information about the Dev mailing list