我是javascript的新手。我正在进行一些“对象字面量”的实践。以下是我尝试的代码。BodyLoaded是body标签的onload事件的事件处理程序。
//可以工作 - getName返回"bingo"
function BodyLoaded()
{
var dog = {
name: "defaultname",
getName: function () {
return name;
},
setName: function (n) {
name = n;
}
};
dog.setName("bingo");
console.log(dog.getName());
}
//也可以使用 - getName返回"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());
}
//无法正常工作- getName返回“”
function BodyLoaded()
{
var dog = {
name: "defaultname",
getName: function () {
return this.name;
},
setName: function (n) {
name = n;
}
};
dog.setName("bingo");
console.log(dog.getName());
}
当调用getName("bingo")时,上面的代码返回了预期的结果。但是如果在getName函数中返回this.name,则会返回一个空字符串。奇怪的是,如果我在两个函数(setName和getName)中都使用this.name,那么代码可以正常工作并返回预期值("bingo")。试图理解这种行为。
this
指的是父对象。 - Qantas 94 Heavy