Copy link to clipboard
Copied
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
Copy link to clipboard
Copied
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;
Find more inspiration, events, and resources on the new Adobe Community
Explore Now