I am new to javascript. I was doing some hands on "object literals". Below is the code i was trying. BodyLoaded is the event handler for onload event of body tag.
//works - getName returns "bingo"
function BodyLoaded()
{
var dog = {
name: "defaultname",
getName: function () {
return name;
},
setName: function (n) {
name = n;
}
};
dog.setName("bingo");
console.log(dog.getName());
}
//works too - getName returns "bingo"
function BodyLoaded()
{
var dog = {
name: "defaultname",
getName: function () {
return this.name;
},
setName: function (n) {
this.name = n;
}
};
dog.setName("bingo");
console.log(dog.getName());
}
//doesnt work - getName returns ""
function BodyLoaded()
{
var dog = {
name: "defaultname",
getName: function () {
return this.name;
},
setName: function (n) {
name = n;
}
};
dog.setName("bingo");
console.log(dog.getName());
}
The above code returns expected result when calling getName ("bingo"). But if I return this.name in the getName function, it returns and empty string. The strange part is, if i use this.name in both the functions (setName and getName) the code works fine and returns the expected value("bingo"). Trying to understand this behavior.