我昨天开始研究JavaScript,今天我参加了对象和功能主题。
我已经完成了这项工作,但我真的很怀疑为什么在dog1对象中,如果我使用this关键字,我只会在日志中获得“undefined”返回。
我已经在这里和谷歌上搜索了这个,但没有运气。我不是在寻找解决这个问题的代码,只是为了理解为什么在第二种情况下“这个”不起作用。
var dog0 = {
Name: "Bob",
color: "Golden",
breed: "Labrador",
dogcard1: function() {
return "Hi, this is " + this.Name + ", a " + this.color + " " + this.breed ;
}
};
console.log(dog0.dogcard1());
function dogcard(a, b, c) {
return "Hi, this is " + a + ", a " + b + " " + c ;
}
var dog1 = new Object();
dog1.Name = "Suzy";
dog1.color = "black";
dog1.breed = "Bulldog";
dog1.presentation = dogcard(this.Name, dog1.color, dog1.breed);
console.log(dog1.presentation);
答案 0 :(得分:3)
你得到undefined
的原因是因为JavaScript没有Name
来自的地球线索。
在JavaScript中,您可以依赖三个范围:
如果您调用this
,您可能会看到它附加到Window
,这实际上是全局空间。你没有在那里声明Name
,这很有道理。
在dog1
对象内部,您具有引用紧邻对象所需的范围,因此this
适用。我会仍然阻止特定用途 - 尽管 - 个人偏好 - 而是传递价值所以它清楚地显示了所有内容的来源。
你可能意味着使用dog1
代替this
来代替该特定变量,所以我鼓励你解决这个问题。
答案 1 :(得分:0)
如果你处于严格模式,如果执行上下文没有定义它,它仍然是“未定义的”。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this