簡體   English   中英

對這個 javascript 模式感到困惑

[英]Confused about this javascript pattern

遇到下面幾行代碼,但是看不懂。

這是什么 (/ ... /)(this); javascript 的目的? 它有這種模式的名稱嗎?

代碼如下:

//Move.js
(function(exports){
  exports.Move = function(){

  };
})(this);

此模式是“ 立即調用 Function 表達式”。 簡而言之,它只是立即執行的 function。 最后的this是要發送到內部 function 的參數,將作為exports訪問

(function(exports){

    //that was "this" outside, is now "exports" in here

}(this));

在您的示例中,我們可以假設無論this是什么,它都是一些 object 已向其添加了Move方法。

有些人還稱這種模式為“ 模塊模式”,因為它創建了一個“封閉環境”,因此由於新的 function scope,它里面的東西是不可見的。換句話說,無論里面是什么,都可以看到外面,但外部只能看到內部允許它看到的

該模式只是在執行時將exports分配給this

假設全局 scope 和瀏覽器, this將指向window object。

考慮到這些假設, window.Move應該包含在該 IIFE 內部分配的 function(立即調用 Function 表達式)。

如果這個 function 在不同的上下文中被調用,而this不是window ,它將this方法分配給外部環境中的任何東西。

這種模式稱為“模塊模式”。 有各種子模式,這個使用了增強模塊模式。

首先,我們導入模塊,然后添加屬性,然后導出它。 這是一個示例,從上面擴充了我們的模塊:

有關此模塊模式的更多信息,請查看http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth

有關一般 Javascript 模式的更多閱讀,請查看http://addyosmani.com/resources/essentialjsdesignpatterns/book/

暫無
暫無

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

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