对这个javascript模式感到困惑
Confused about this javascript pattern
本文关键字:模式 javascript 更新时间:2023-09-26
遇到以下代码行,但无法理解。
这是什么(/…/)(this);javascript的目的?它有这个图案的名字吗?
代码如下:
//Move.js
(function(exports){
exports.Move = function(){
};
})(this);
此模式是"立即调用函数表达式"。简而言之,它只是一个立即执行的函数。端部的this
是要发送到内部函数的参数,该函数将作为exports
访问
(function(exports){
//that was "this" outside, is now "exports" in here
}(this));
在您的示例中,我们可以假设无论this
是什么,它都是添加了Move
方法的某个对象。
有些人还将这种模式称为"模块模式",因为它创建了一个"包含的环境",因此由于新的函数范围,它内部的东西对不可见。换句话说,任何内部的东西都能看到外部,但外部只能看到内部让它看到的
该模式只是在执行时将exports
分配给this
。
假设全局作用域和浏览器,this
将指向window
对象。
考虑到这些假设,window.Move
应该包含在IIFE(立即调用函数表达式)内部分配的函数。
如果在this
是而不是window
的不同上下文中调用此函数,它将把该方法分配给外部环境中的任何this
。
此模式称为"模块模式"。有各种各样的子模式,其中一个使用了增强模块模式。
首先,我们导入模块,然后添加属性,然后导出这里有一个例子,从上面扩充我们的模块:
有关此模块模式的更多信息,请查看http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
有关一般Javascript模式的更多阅读,请查看http://addyosmani.com/resources/essentialjsdesignpatterns/book/
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- 包含圆括号的JavaScript Regex模式
- 用于操纵DOM API的Javascript设计模式
- 用javascript创建一个看起来正常分布的模式
- 揭示模块模式(JavaScript) - 这无法访问私有方法
- 匹配每个字符,直到在行首出现模式(JavaScript)
- 用于处理成功、失败、重试的异步请求的设计模式?(JavaScript)
- 模块模式javascript不是函数
- 从自定义模块模式Javascript库调用XMLHttpRequest时不会发生任何事情
- 浏览器中的观察者模式javascript:订阅事件"添加了Dom元素“;并处理这个元素
- IE11在Iframe下的怪癖模式-javascript错误
- 返回具有链接模式javascript的项
- 命令模式 JavaScript 中的执行函数
- gsp下拉值返回NaN在IE7文档模式(javascript)
- 动态模式Javascript
- 保持服务器时间,即使在离线模式(javascript/html5)
- 我如何专业地构建我的模块模式Javascript项目
- 怪癖模式 - JavaScript 不会更新表单选择选项
- 设计模式- JavaScript.安全提取深层(可能不存在)对象属性的通用函数