javascriptlanguage-featuresobject-notation

Is there a name for a language feature that allows assignment/creation?


This is a bit hard for me to articulate, but in PHP you can say something like:

$myArray['someindex'] = "my string";

and if there is no index named that, it will create/assign the value, and if there IS an index, it will overwrite the existing value.

Compare this to Javascript where today I had to do checks like so:

if (!myObject[key]) myObject[key] = "value";

I know this may be a bit of a picky point, but is there a name for the ability of PHP (and many other languages) to do these checks on their own as opposed to the more verbose (read: PITA) method of Javascript?

EDIT

I confused myself in asking this. Let's say you want to add to this structure:

myobject = {
    holidays : {easter : {date : 4/20/2010,
                          religion : Christianity}
                holi : {date : 3/10/2010,
                        religion : hindu} 
}

I had a problem today where I received tabular data and I wanted to put it into a tree sort of like this by building an object.

When I started my loops, I had trouble making NEW indices like myobject['holidays'][thisVariable][date] = 4/20/2010 if the tree hadn't been mostly built to that point.

I'll grab a code sample from my other computer if this isn't clear, sorry for the poor thinking.


Solution

  • I would guess 'auto-vivification' http://en.wikipedia.org/wiki/Autovivification from Perl might be relevant, but it works different than you described. The wiki page has a good summary. Other languages like Ruby support a "default action" hook for hash keys that have not been assigned, which can be used for auto-vivification as well.

    For instance, in Ruby:

    
    >> h = Hash.new {|h,k| h[k] = {}}
    => {}
    >> h["hello"]["world"] = 20
    => 20
    >> h["hello"]["world"]
    => 20