Thanks for pointing that out. We can't get rid of the bracket syntax entirely (f.e. it's needed in every in "for ... in" construct), I didn't think about that.

Let's go with Marc's suggestion; Dot notation in general and square brackets when dynamically adressing object attributes.

Marc Jansen schrieb:
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
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapbender_dev


_______________________________________________
Mapbender_dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapbender_dev



_______________________________________________
Mapbender_dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapbender_dev


--
***************************************
Where2B-Konferenz Die Lösungskonferenz der WhereGroup
am 29. November 2007 in Bonn
http://www.where2b-conference.com
***************************************
_______________________________________

W h e r e G r o u p GmbH & Co. KG

Siemensstraße 8
53121 Bonn
Germany

Christoph Baudson
Anwendungsentwickler

Fon: +49 (0)228 / 90 90 38 - 17
Fax: +49 (0)228 / 90 90 38 - 11
[EMAIL PROTECTED]
http://www.wheregroup.com
Amtsgericht Bonn, HRA 6788
_______________________________________

Komplementärin:
WhereGroup Verwaltungs GmbH
vertreten durch:
Arnulf Christl, Olaf Knopp, Peter Stamm
_______________________________________

_______________________________________________
Mapbender_dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapbender_dev

Reply via email to