Javascript 这里是什么(函数文字)
我有下面的结构,我不太理解输出Javascript 这里是什么(函数文字),javascript,Javascript,我有下面的结构,我不太理解输出 var asker = { answer: "Its raining...", askQuestion: function(answered){ console.log("Opps..." + this.answer); answered(); } } //function literal var debunker = function(){ answer = "Its cloudy...";
var asker = {
answer: "Its raining...",
askQuestion: function(answered){
console.log("Opps..." + this.answer);
answered();
}
}
//function literal
var debunker = function(){
answer = "Its cloudy...";
debunk = function(){
console.log(this);
console.log("No way! The real answer is:" + this.answer);
};
return {
debunk: debunk
};
}();
asker.askQuestion(debunker.debunk);
它给了我这些输出
Opps...Its raining...
DOMWindow
No way! The real answer is:Its cloudy...
debunk.debunk
得到的答案是“它是阴天的”
。但是,debunk函数中的此
指的是DOMWindow
,因此此回答
如何在它指的是窗口
对象时获得其云状
?原因是回答
也是窗口
对象的一个属性。如果定义时没有var
关键字,它将附加到窗口。使用var
关键字,它是定义它的函数的私有属性。将介绍读入。在全局上下文中执行函数answered()
。由于answer
(在debunker构造函数中)不是私有变量,因此它将是全局窗口
对象的属性。answer
是全局变量,因为您没有使用var
声明它。这将它置于DOMWindow
的范围内
this
是DOMWindow
,所以是这个。答案是“它是阴天的”除了这个问题,答案不是debunker的属性。另外,你的代码调用了一个名为“已回答”的函数,你没有发布任何这样的函数。@Pointy:检查asker.askQuestion
函数的参数;)啊。。。今早咖啡不够:-)选择最佳答案,因为您添加了额外的参考链接以获取详细信息。