Javascript 什么是;这";在这个模块模式中是什么意思
在执行Javascript 什么是;这";在这个模块模式中是什么意思,javascript,Javascript,在执行abc.self时,我得到了未定义的这个恰好是在这个上下文中。这个指的是当前对象。在您的条件下,此将成为窗口,当您试图获取值abc.self时,您需要这样使用: var abc=(function(){ var self=this; return { self:self } })(); 现在,只有您可以获得该值: this.self = this; 但是要注意的是,您不能像上面的代码那样使用abc作为构造
abc.self
时,我得到了未定义的这个恰好是在这个上下文中。这个指的是当前对象。在您的条件下,此
将成为窗口
,当您试图获取值abc.self
时,您需要这样使用:
var abc=(function(){
var self=this;
return {
self:self
}
})();
现在,只有您可以获得该值:
this.self = this;
但是要注意的是,您不能像上面的代码那样使用abc作为构造函数,因为您使用的是闭包。在“根范围”中,此
是窗口
及
对我来说
console.log(abc.self);
为了便于在中进行解释,可以简化您所拥有的内容
Window {top: Window, window: Window, ...}
表达式(在第一组括号中)定义了一个函数。然后在没有上下文的情况下调用此函数(this
)。这种构造称为。由于不传递上下文,因此行为取决于是否在中调用它:
- 在非严格模式下,您将拥有全局对象(
window
在浏览器中,global
在节点中)
- 在严格模式下,函数调用缺少的上下文不会被替换,而是
未定义
当你的未定义时,我想你已经加入了。您可能有“使用严格”代码>位于文件开头或封闭函数中
例如,如果您想传递一个上下文,您可能已经这样做了
(function(){ console.log(this) })();
abc.self
对我来说效果很好,这是全局范围,因为当我执行abc.self
时,生命没有特殊的范围。我得到了窗口
对象。是的,我处于严格模式。但我无法理解状态。“在严格模式下,函数调用缺少的上下文不会被替换。”
(function(){ console.log(this) })();
(function(){ console.log(this) }).call(someobject);