Problems with casting or string (literals?), and dynamic references

Can someone please tell me the difference in these three code chunks?

  1. is it casting a string, or incorrect syntax?

  2. this works,

  3. if #2 works as a plain “” string, then what cases would prompt the string to need String(“whatever”) ?

if menu_item_txt is a textField at _level0:


for (var i = 0; i < 7; i++) {
        var myText:Object = this[***String(menu_item_txt)*** + i];
        //trace(myText);
        myText.autoSize = true;
        myText.embedFonts = true;
        myText.antiAliasType = "advanced";
        myText.gridFitType = "subpixel";
        myText.thickness = 0;
        myText.sharpness = 45;
    }


for (var i = 0; i < 7; i++) {
        var myText:Object = this[***"menu_item_txt"*** + i];
        //trace(myText);
        myText.autoSize = true;
        myText.embedFonts = true;
        myText.antiAliasType = "advanced";
        myText.gridFitType = "subpixel";
        myText.thickness = 0;
        myText.sharpness = 45;
    }


for (var i = 0; i < 7; i++) {
        var myText:Object = this[***String("menu_item_txt")*** + i];
        //trace(myText);
        myText.autoSize = true;
        myText.embedFonts = true;
        myText.antiAliasType = "advanced";
        myText.gridFitType = "subpixel";
        myText.thickness = 0;
        myText.sharpness = 45;
    }