[英]What does “this” mean in this revealing module pattern
var abc=(function(){
var self=this;
return {
self:self
}
})();
在做abc.self
我得到undefined
是什么this
正好是在這方面。
為了解釋的目的,你可以簡化你所擁有的
(function(){ console.log(this) })();
您的表達式(在第一組括號中)定義了一個函數。 然后在沒有上下文的情況下調用此函數( this
)。 該構造稱為IIFE 。 由於您沒有傳遞上下文,因此行為取決於是否以嚴格模式調用它:
在非嚴格模式下,您將擁有全局對象(瀏覽器中的window
,節點中的global
)。
在嚴格模式下,函數調用的缺失上下文不會被替換,它是undefined
。
當你undefined
,我想你是在嚴格的模式 。 你可能有"use strict";
在文件的開頭或封閉的功能。
如果你想傳遞一個上下文,你可能已經完成了
(function(){ console.log(this) }).call(someobject);
this
指的是當前的對象。 在您的情況下, this
將是window
,當您嘗試獲取值abc.self
,您需要使用如下:
this.self = this;
現在,只有你可以獲得價值:
var xyz = new abc();
xyz.self
但要注意,你不能像上面代碼一樣使用abc作為構造函數,因為你正在使用閉包。
在“根范圍” this
是window
和
console.log(abc.self);
給我的結果
Window {top: Window, window: Window, ...}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.