Simple question: hows to dynamically reference a class object

Hi i  need a little help as my brain has gone dark on me :-)

i have the below object backupCartItem (simplified)

and i have a function which needs to reference different properties within the different contained objects.

public function createEndorcementItem( propertyClass:String, propertyName:String ):void
var val:* = backupCartItem[ propertyClass ][ propertyName ];
trace( val.toString();

public function doSomething():void
createEndorcementItem( 'sessionVO.primaryInsurie', 'AGE_NOW');

the above little script example should set val to being

but it throws an error

Property sessionVO.primaryInsurie not found on com.travins.cairngorm.model.CartItemVO

how can i dynamically reference the object please

      backupCartItem      com.travins.cairngorm.model.CartItemVO (@70bd781)      
            admin_fee      0      
            id      1174 [0x496]      
            sessionVO      com.travins.cairngorm.model.CurrentSessionVO (@27a2881)      
                  ADULT_COUNT      1      
                  CHILD_COUNT      0      
                  primaryInsurie      com.travins.cairngorm.model.InsurieVO (@1fa5dc1)      
                        AGE_AT_START_TIME      40 [0x28]      
                        AGE_ERROR      ""      
                        AGE_IS_VALID      true      
                        AGE_NOW      40 [0x28]      
                        COUNTRY_ID      1      
                        DATE_OF_BIRTH      Date (@71dbcd1)      
Who is Participating?
dgofmanConnect With a Mentor Commented:
You mixed in your code setter and getter that reason why you confused yourself.
Check if this what you want:

private var backupCartItem:Object;

			public function createEndorcementItem( propertyClass:String, propertyName:String, value:*):void
				if(backupCartItem == null)
					backupCartItem = {};
				if(backupCartItem[propertyClass] == undefined)
					backupCartItem[propertyClass] = {};
				backupCartItem[propertyClass][propertyName] = value;
			public function getEndorcementItem( propertyClass:String, propertyName:String ):void
				var val:* = backupCartItem[propertyClass][propertyName];
				trace( val.toString());
			public function doSomething():void
				createEndorcementItem( 'sessionVO.primaryInsurie', 'AGE_NOW', 25);
				getEndorcementItem( 'sessionVO.primaryInsurie', 'AGE_NOW');

Open in new window

cghrmauritiusAuthor Commented:
humm no sorry i needed it the other way round im not trying to set the value im trying to get the value of

backupCartItem[ propertyClass ][ propertyName ]

i know there is a value cause if i query it manually as

backupCartItem.sessionVO.primaryInsurie.AGE_NOW  i do ge the cirrect value but i cant get it when using the square brackets

any ideas please
cghrmauritiusAuthor Commented:
i see yuor example does work, i must have something wrong with my backupcartItem but i dont understand why because i can get the value if done manually

thanks i will assign you the points

thanks for your time
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to and use offer code ‘EXPERTS’ to get 10% off your first purchase.

cghrmauritiusAuthor Commented:
cghrmauritiusAuthor Commented:
Actually if checked in debuger your example isnt right im afraid

backupCartItem      Object (@8cb9421)      
      sessionVO.primaryInsurie      Object (@8cb93f9)      
            AGE_NOW      25 [0x19]      

as per my original which is what my object dump looks like

backupCartItem      com.travins.cairngorm.model.CartItemVO (@70bd781)      
             sessionVO      com.travins.cairngorm.model.CurrentSessionVO (@27a2881)      
                   primaryInsurie      com.travins.cairngorm.model.InsurieVO (@1fa5dc1)      
                        AGE_IS_VALID      true      
                        AGE_NOW      40 [0x28]      

please notice that in your example the primaryInsurie object isnt nested inside sessionVO

cghrmauritiusAuthor Commented:
ok i have found a solution finally your comment gave me an idea which worked so thanks for the pointers

here is my solution but im sure its a dirty method and that there must be a cleaner way!!!

public function createEndorcementItem( propertyClass:String, propertyName:String ):void
	var arr:Array = propertyClass.split(".");
	var cur:Object;
	cur = backupCartItem;
	for each (var a:String in arr)
		cur = cur[a];
	var val:* = cur[propertyName];

Open in new window

I am very happy to know I helped you.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.