问题标签 [module-pattern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 通过 jQuery 或不同全局的模块模式
这种模式是:
我不明白传递全局的目的是什么,如果它是全局的?
在原型链中让 jQuery 或其他全局“更接近”不是更有效吗?
如果有人想使用
那是指jQuery
为什么不做
在范围内他/她想使用它。
javascript - 使用模块模式时的 Javascript mixins
我使用模块模式已经有一段时间了,但最近开始想将函数和属性混入其中以增加代码重用。我已经阅读了一些关于这个主题的好资源,但对于最好的方法仍然有点不确定。这是一个模块:
这是一个混合对象:
理想情况下,我想将来自其他对象的一些方法作为私有方法和一些作为公共方法混合,这样我就可以调用一些“扩展”函数,参数为“私有”/“公共”。以便
通过调用 mixinMethod1() 使 myMixin 方法在 myModule 中可用并具有正确的范围,并且:
通过调用 module.mixinMethod1() 使 myMixin 方法在 myModule 中可用并具有正确的范围
我尝试过使用一种将属性从一个原型复制到另一个原型的方法,我尝试过下划线扩展方法将对象的属性从一个原型复制到另一个,以及介于两者之间的各种东西。我想我在这一点上对范围和原型有点转变,并且希望在使用模块模式时如何最好地做这样的混合。请注意,对象 myMixin 的外观并不重要(无论是向原型添加功能还是模块本身),我只是想找出一些使其工作的方法。
感谢!
javascript - JS 模块模式的公共方法作为回调受害者。(这个问题)
我花了一天的大部分时间阅读有关模块模式及其“this”范围的信息。最终,我找到了解决问题的方法,尽管感觉有更好的做事方式。
实际代码超过 200 行,但我将其归结为以下内容:objA 有一个方法 (publicA),objB 希望通过回调调用该方法。使事情复杂化的细节是 publicA 需要 publicA_helper 的帮助来完成它的工作。( http://jsfiddle.net/qwNb6/2/ )
很公平——我已经掌握了调用者的上下文往往会影响“this”的值。因此,我添加了一些措施以在 objA 中保留“this”,但这些措施似乎都不起作用。我已经尝试过
var objA = (){}.call({})
设置var self = this;
(相应地调用self.publicA_helper()
)。没运气。
最终,我添加了一个私有变量var self;
以及一个公共方法:
...并且通过确保我objA.init();
在传递objA.publicA
给之前打电话objB.callback
,事情确实有效。
我不能强调有更好的方法来做这件事的感觉是多么巨大。我错过了什么?
javascript - ajax 调用后从 Javascript 模块返回值
---已编辑---由于我的无知,这实际上与所有其他 AJAX 类型的问题相同......需要进入正确的心态。为了后代的缘故将它留在这里,也许可以帮助其他人在发布之前再看一下回调。
所以我想提前说,我认为这不是标准的“我如何从 ajax 调用返回值”问题,人们不等待异步调用完成。我认为这是对 Javascript 模块模式的变量范围误解,因此我们将不胜感激。
我正在关注这篇关于构建我的 ajax 调用的 SO 帖子,所以我在调用完成后使用延迟对象来处理我的数据。还有一些关于 Javascript 模块模式的教程,比如this和this。从外部模块内部的私有模块中返回值似乎相当简单——但是,我总是将 myObj.roots() 设为未定义。即使当我检查断点时它被定义为 X 值的数组。我错过了什么简单的事情——任何提示?谢谢!对不起一个简单的问题,我对 JS 模块模式完全陌生,并试图建立自己的库......
我的 JS 代码:
我的错误(来自 Chrome 的开发者工具控制台):
javascript - JavaScript 设计模式需要帮助:模块的松散增强
为清楚起见进行编辑- @Qantas94Heavy - 我明白它在“说”或应该做什么,我不明白的是为什么以及更重要的是它是如何工作的:
我正在阅读关于 JS 模块模式的高级教程,它给出了这个例子:
困扰我的事情(我需要你的帮助)是最后一句话:
我无法理解使其成为可能的语法规则。在搜索了一些关键字、“JavaScript Module Syntax”和“Module Pattern Short Hand”之后,我发现我仍然不太了解这背后的基础。
有人可以解释一下或指出我正确的方向来理解这个/获得更深入的理解吗?
真诚的,gggi
javascript - 在 CRM 2011 中未使用 JavaScript 的模块模式创建对象
我根据我的 CRM 2011 表单的模块模式设计了 JavaScript 逻辑。在表单加载时,有时我会收到警报,'Crm object undefined'
但在刷新(单个或多个)时,此错误消失(工作顺利)。
在相当挣扎之后,我仍然无法理解为什么会发生这种情况。它与模块模式有什么关系?因为onLoad
函数被触发得很好,但困扰我的是为什么有时Crm
没有创建对象。
javascript - 用于 jquery 应用程序的 Javascript 模块模式
我给大家写信是因为我想就我正在使用的一个典型的模块模式提供一些建议和技巧。
在网络和书籍中搜索该主题,除了某些概念外,我找不到与此架构选择类似的任何内容。
简而言之,模式: ° 每个网页必须只包含一个范围,并且可以包含多个模块。° 每个模块都是一个带有子功能的 IIFE。° 每个范围都有一个准备好的文档并调用一个或多个模块。
我附上了一个代码示例,以便更清楚地说明。
这种模式是否让您想起以前已经见过的东西?是一个好的架构选择吗?这种模式有任何弱点或架构错误吗?这是对 IIFE 函数和命名空间的好用吗?
提前谢谢你,最好的问候。
索引.html
module.one.js
module.two.js
范围.js
javascript - javascript模块模式与函数
首先比较这两个代码:
第二:
如果 initializeView() 仅在 init() 内部调用,那么哪个更好?(我认为他们做了同样的工作)
编辑:首先我没有考虑全局命名空间,因为它们都在类中。
javascript - JavaScript 使用模块模式创建类
我使用模块模式创建了一个类,因为我需要一些私有成员和函数。问题是我无法为一个模块创建多个实例。如果我创建一个新实例,它将替换我之前创建的所有实例。
这是代码。
这是我的问题: 1. 如果我想使用这种模式,这是否意味着我不能为一个类创建多个实例?2. 如果我不能使用这种模式,还有其他方法可以在 Class 中使用 private 吗?
javascript - 使用模块模式更改私有方法中的公共变量
我有下一个代码:
上面的代码没有意义(它只是为了测试),但我想知道一般我是否可以调用公共方法,它会调用私有方法,最终会改变公共变量。如何重写以显示正确的值?