[Mapbender-dev] Re: [Mapbender] #120: replace ["..."] with dot
notation in JS
Marc Jansen
jansen.marc at gmx.de
Wed Oct 17 03:05:17 EDT 2007
Hi Christoph,
first: I would be happy with both dot or bracket notation :-)
I was thinking about dynamically adding attributes:
var attrName = 'humpty';
var attrValue = 'dumpty';
var ordinaryObject1 = {};
ordinaryObject1[attrName] = attrValue;
// ordinaryObject1 is now {"humpty":"dumpty"}
var ordinaryObject2 = {};
ordinaryObject2.attrName = attrValue;
// ordinaryObject2 is now {"attrName":"dumpty"}
And what about attributes starting with a number (perhaps not nice or
even allowed, I'm not sure):
ordinaryObject1["123test"] = 456;
// ordinaryObject1 is now {"humpty":"dumpty","123test":456}
ordinaryObject2.123test = 456; // fails
You said "square brackets indicate it's an array, but it really is an
object.".
Some might think so. Yet when there is an alphanumeric string following,
it should be clear that we are talking about an object.
As for JSlint, you are right and the same behaviour is found in the
Eclipse-Plugin Aptana (perhaps even in JSEclipse, not sure here)... they
all suggest using dot notation.
Maybe we should go with dots, and in the rare cases that we need the
functionality described above, change to brackets. Nice discussion
though. I wolud be interested in more opinions on this or are we just
"splitting hairs" on a total side-topic?
Just my two cents,
-- Marc
Christoph Baudson (WhereGroup) schrieb:
> Yes, at some points Mapbender uses arrays where objects should be
> used; this is definitely faulty.
>
> There are two reasons why I think the dot notation is superior
>
> 1) Using x = {} and then x["key"] is misleading: the square brackets
> indicate it's an array, but it really is an object.
>
> 2) JSLint recommends dot notation (and I am a blind follower)
>
> Marc, if you have any arguments pro brackets, please share them with
> us. I would like to see all sides to the issue.
>
> Thanks
>
> Christoph
>
> Marc Jansen schrieb:
>> Hi Christoph,
>>
>> I thought that the root of the failure might be the (IMHO) incorrect
>> usage of arrays in Javascript. Correct me if I'm but AFAIK there are
>> no associative arrays within javascript. The purpose of these are
>> handles by objects. I know that object have some disadvantages --
>> e.g. they are missing the length property.
>>
>> I personally favor the bracketed syntax, but thats a sole personal
>> preference.
>>
>>
>> -- Marc
>>
>> Christoph Baudson (WhereGroup) schrieb:
>>> Sorry for the last post. Ignore it. Too much copy and paste for any
>>> human to handle. Here's the version I intended to post
>>>
>>> --
>>>
>>> To illustrate the difference, an example
>>>
>>> Does not work with toJSONString()
>>>
>>> currentLayer.layer_style[count] = [];
>>> currentLayer.layer_style[count]["name"] = styleName;
>>> currentLayer.layer_style[count]["title"] = styleTitle;
>>> currentLayer.layer_style[count]["legendurl"] = styleLegendUrl;
>>> currentLayer.layer_style[count]["legendurlformat"] =
>>> styleLegendUrlFormat;
>>>
>>> Does work
>>>
>>> currentLayer.layer_style[count] = {};
>>> currentLayer.layer_style[count].name = styleName;
>>> currentLayer.layer_style[count].title = styleTitle;
>>> currentLayer.layer_style[count].legendurl = styleLegendUrl;
>>> currentLayer.layer_style[count].legendurlformat =
>>> styleLegendUrlFormat;
>>>
>>> May work, not tried (curly brackets in line 1)
>>>
>>> currentLayer.layer_style[count] = {};
>>> currentLayer.layer_style[count]["name"] = styleName;
>>> currentLayer.layer_style[count]["title"] = styleTitle;
>>> currentLayer.layer_style[count]["legendurl"] = styleLegendUrl;
>>> currentLayer.layer_style[count]["legendurlformat"] =
>>> styleLegendUrlFormat;
>>> _______________________________________________
>>> Mapbender_dev mailing list
>>> Mapbender_dev at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/mapbender_dev
>>>
>>
>> _______________________________________________
>> Mapbender_dev mailing list
>> Mapbender_dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapbender_dev
>
>
More information about the Mapbender_dev
mailing list