Skip to main content
guzman1798
Participant
November 3, 2015
Question

Help me with this Code??

  • November 3, 2015
  • 1 reply
  • 316 views

I'm currently on AS3  for Flash and whenever i run this code:

function printMyName()

{

  trace (this.name);

}

var myCountry = new Object();

myCountry.name = "United States";

myCountry.printName = printMyName;

myCountry.myCity = new Object();

myCountry.myCity.name = "Phelan";

myCountry.myCity.printName = printMyName;

myCountry.myCity.myStreet = new Object();

myCountry.myCity.myStreet.name = "Tim Buck Two";

myCountry.myCity.myStreet.printName = printMyName;

myCountry.printName();

myCountry.myCity.printName();

myCountry.myCity.myStreet.printName();


In the output it says:

root1

root1

root1

When it needs to be:

United States

Phelan

Tim Buck Two

This topic has been closed for replies.

1 reply

Ned Murphy
Legend
November 3, 2015

The way you have that written, 'this' will always refer to the current timeline.  Here is one way to rewrite it...

function printMyName(src:Object)

{

  trace (src.name);

}

var myCountry = new Object();

myCountry.name = "United States";

myCountry.printName = printMyName(myCountry);

myCountry.myCity = new Object();

myCountry.myCity.name = "Phelan";

myCountry.myCity.printName = printMyName(myCountry.myCity);

myCountry.myCity.myStreet = new Object();

myCountry.myCity.myStreet.name = "Tim Buck Two";

myCountry.myCity.myStreet.printName = printMyName(myCountry.myCity.myStreet);

myCountry.printName;

myCountry.myCity.printName;

myCountry.myCity.myStreet.printName;