[英]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.