簡體   English   中英

“這個”在這個揭示模塊模式中意味着什么

[英]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作為構造函數,因為你正在使用閉包。

在“根范圍” thiswindow

console.log(abc.self);

給我的結果

Window {top: Window, window: Window, ...}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM