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@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapbender_dev
_______________________________________________
Mapbender_dev mailing list
Mapbender_dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapbender_dev
_______________________________________________
Mapbender_dev mailing list
Mapbender_dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapbender_dev