我是 JavaScript 新手。我正在对“对象文字”进行一些操作。下面是我正在尝试的代码。BodyLoaded 是 body 标签的 onload 事件的事件处理器。
//works - 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”)。试图理解这种行为。