问题标签 [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.

0 投票
1 回答
421 浏览

javascript - 模块模式和“私有属性”

好的,几周前,我了解了 javascript 中的“模块模式”。我发现的所有示例基本上都是这样的:

我很兴奋,所以我立即开始了自己的测试:

然而,我没想到所谓的“私有”属性“id”,并不是一个实例变量。如果我注意的话,我会注意到这样一个变量的范围......我严重误解了“私有变量和函数”的评论......

尽管如此,我还是决定找到一种在模块中使用私有实例变量的方法。

目前我发现的唯一解决方案是这种好方法:

但是已经没有原型优势了......

您有更好的方法来混合“模块模式”和私有实例变量的使用吗?

0 投票
1 回答
1398 浏览

javascript - JavaScript namespace in Module Pattern

I was reading How Good C# Habits can Encourage Bad JavaScript Habits article about creating namespace and modular pattern but I don't understand the reason to use $ and jQuery to create the namespace. Look at this code:

Why is it sending $ as parameter and then calling it with jQuery?

0 投票
3 回答
149 浏览

javascript - 子模块模式中的对象字面量和“this”

我在一个子模块模式代码中工作。想要使用对象文字创建子模块,问题是this子模块内的对象是 MODULE 而不是我的对象文字。任何想法?

0 投票
3 回答
9407 浏览

javascript - Javascript 模块模式:如何向我们自己的库注入/创建/扩展方法/插件?

我是 JavaScript 新手。抱歉,如果我的问题有任何问题。

如何向我们自己的库注入/创建/扩展方法或插件?这是“yourlib.js”

下面是你的“plugin.js”

0 投票
5 回答
893 浏览

javascript - JavaScript 模块模式(function(){})(); vs 块语句

我之前看到了一个使用我的"Weird"示例的问题的答案,我想知道这两种方法是否有任何好处。

一些HTML:

有什么区别:

window.onload甚至,当人们可以将脚本放在身体底部时,为什么还要使用呢?还是只是个人喜好问题?

0 投票
1 回答
2748 浏览

javascript - JS模块模式覆盖功能

我有以下模式

您能告诉我如何调整受 Douglas CrockFord 启发的模块模式以完全覆盖alerNumber功能吗?到目前为止showNumber,函数显示 10 而不是 20。

谢谢大家先进

带有代码的 JSFiddle 在这里

0 投票
1 回答
47 浏览

javascript - Module Pattern and scope

I'm trying to create encapsulated objects that can be inherited and that possess some public properties. Here's some code:

My question why exactly does mo.bar() log 'undefined undefined' and how can I fix this issue?

I'm trying to keep publicVar1 and publicVar2 in scope internally to the MyObject module but also make them publicly accessible and inherited by any other objects that extend the myObject prototype.

Thanks.

0 投票
1 回答
672 浏览

javascript - Javascript 模块模式、原型和谷歌闭包

我无法让这个代码结构在 Google Closure Compiler 的混淆中存活下来。这是一些示例代码:

在我的代码的其他地方,我需要能够编写如下内容:

但是编译器正在重命名所有内容(如预期的那样)。混淆后如何使我在代码中其他地方定义的原型可用?我尝试导出如下:

但是当原型方法被调用或者它们相应的闭包被执行时,事情似乎就崩溃了。

任何帮助表示赞赏。

0 投票
1 回答
184 浏览

javascript - 在 Javascript/Coffeescript 中,如何在测试中模拟出模块的公共变量?

我刚刚了解了模块模式。我已经编写了一些足够复杂的代码,以至于我想测试一个功能。问题是,我不知道如何模拟一个值。接下来是coffeescript,但我会将生成的javascript放在下面,以便获得更多帮助。这是我的测试,它试图模拟一个名为 的字段state,但它总是打印“未定义”:

这里是 test2 ,出于这个问题的目的,可以将其视为生产代码:

这是我在其中运行的 html,但我认为这并不重要:

Javascript中的test2:

Javascript中的test3:

正如我所说,运行此警报undefined。我希望它输出“abc”。我怎样才能做到这一点?

0 投票
1 回答
196 浏览

javascript - 在 Javascript/Coffeescript 中,如何在测试中模拟出模块的公共功能?

这就像我之前的问题一样,但这是关于函数而不是变量。我有一个模块,我想在其中模拟一个函数。这是我的咖啡脚本代码:

这会提醒“生产”,但我希望它提醒“我嘲笑这个”。我怎样才能做到这一点?

这是获取输出的javascript:


更新

我已经想出了如何通过应用我原来的问题的答案来自己解决我的问题:

注意this这一行中的:doSomething = -> this.iWantToBeMocked(). 但是这里还有一个问题需要回答。我不明白为什么我必须在this这里使用。我希望有人向我解释嘲笑 doSomething = -> this.iWantToBeMocked()之间的区别。doSomething = -> iWantToBeMocked()