问题标签 [revealing-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 - 为什么 { 位置会影响此 Javascript 代码?
我在这个 Javascript 问题上花了很多时间(你可以说我是 JS 菜鸟):
使用一些编写良好的 Javascript 代码,例如显示模块模式的示例:
运行它工作正常。然后将“{”移动到下一行(作为 C# 开发人员,我将所有环境设置为将花括号放在新行上)并再次运行它。
现在它在“13 换行错误'return'”周围出现了相当多的 JS 错误。和 Chrome 调试器中的“Uncaught SyntaxError: Unexpected token :”。
我的问题是,这样的语法如何影响 Javascript?
我已经在 JSFiddle 中设置了它 (为了让它工作,将“返回”之后的 { 移回同一行)
javascript - 揭示模块模式和范围
我遇到了一些我正在运行的 javascript 的问题,并将其分解为下面的代码。我对为什么调用_localVar
后变量没有改变感到困惑。init()
我发现如果我this._localVar
在revealingModule 中引用,结果符合预期。我对范围感到困惑。有人可以澄清为什么会发生这种情况。我认为如果我不使用this
,那么下一个作用域将是模块,但我认为不会发生这种情况。
javascript - JavaScript 设计模式:模块模式和显示模块模式的区别?
我最近正在阅读《学习 JavaScript 设计模式》一书。我不明白的是模块模式和显示模块模式之间的区别。我觉得它们是一样的。任何人都可以举个例子吗?
javascript - Javascript 模块之间共享的全局变量
我有一个脚本,我想将它分成多个模块。例如,将我所有的鼠标事件放在另一个模块中(mouseup、mousedown 等)。
我使用一堆全局变量来跟踪屏幕上的所有对象。鼠标模块将需要访问这些变量并更改它们。我意识到我可以向其他模块显示所需的每个变量,但他们无法更改它们。
使用Javascript如何最好地实现这一点?我目前使用显示模块模式,并且我读到我必须使用 getter 和 setter(例如我在学校回忆的 C++ 中使用的),但是我有很多全局变量要跟踪。我需要很多这样的方法。这是我应该这样做的方式吗?
或者......这是一个案例,它向我展示了一个问题描述了糟糕的设计。
我正在使用 Fabric.js 进行绘图和所有这些工作。
绘制脚本.js
为简洁起见,我删除了顶部的函数实现。此外,我肯定需要使我的变量名称在命名约定方面更加统一。这一切都还很早,所以如果这让任何人想要打破我的膝盖,我深表歉意!
我不确定如何拆分鼠标事件,所以我的 drawScript.js 文件不会变成 3k 行。鼠标事件都使用我设置的各种组和坐标变量。此外,我需要在应用程序使用的脚本之间共享画布。
也许我只是想努力和过度组织,但我认为寻求帮助会帮助我在更大的项目中变得更好:)
javascript - 将显示模块模式代码转换为模块模式
http://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript
我正在浏览上面的杰作。我仍然无法从上面的文章中得到两件事。
相关问题: JavaScript 设计模式:模块模式和显示模块模式的区别?
我从上述问题中理解了很多部分。任何人都可以将上述revealing module pattern
内容转换为传统的module pattern
,以便我可以看到差异。
javascript - 试图理解这个函数定义的行为
我不知道如何为这个问题命名,但我将揭示模块模式与构造函数一起使用,并注意到一些让我感到困惑的行为。这段代码的实际目的与我的问题无关,我只想了解我看到的这种行为。
这是我遇到问题的代码:
现在调用它:
现在这样做我看到 setAjaxQuery 函数中所有这些 console.dir() 命令的未定义。
我发现问题是参数名称与局部变量相同。我通过执行以下操作解决了这个问题:
我的问题是为什么会发生这种情况?当名称相同时,javascript 在做什么会导致此问题?
javascript - 显示模块/原型模式
到现在为止,我使用显示模块模式来构建我的 Javascript,如下所示:
尽管此代码按预期工作,但我最近阅读了一篇文章,如果您有多个实例,此模式会使用大量内存,并且与其他模式相比,它存在一些速度问题。因为我喜欢使用这种模式,所以我搜索了没有所有这些“问题”的类似模式,并且遇到了 Revealing Prototype Pattern。据我所知,JavaScript 的 Prototype 有更好的内存管理。
现在我想知道使用显示原型模式是否更快/更好的记忆?这个基准测试让我感到惊讶,因为模块模式似乎要快得多。有什么理由吗?
此外,我无法弄清楚如何使用 Revealing Prototype Pattern 拥有多个实例(与上面的 Revealing Module Pattern Fiddle 相比):
我究竟做错了什么?
javascript - 揭示模块模式 java 脚本无法访问变量
我正在 JavaScript 中实现 Revealing Module 模式,并且在访问另一个脚本中声明的变量时遇到了困难。下面是我的代码。
脚本1:
脚本2:
在 HTML 中,我在脚本 2 之前添加了脚本 1,所以我想知道如何在脚本 2 中访问 SomeEventHandler。
javascript - 如何从私有访问模块上的公共方法?
我有这个非常烦人的问题。我需要能够从私有模块模式中访问公共模块功能。我已经对有问题的行发表了评论...有什么办法可以做到这一点吗?
javascript - 为什么当变量不更新时数组会更新?
查看下面的 Javascript 显示模块模式,变量“defaultValue”不会更新,需要一个 getter 来访问和更新值 - 解释在这里。
那么,为什么一个数组(例如 defaultArray)会更新并且可以在没有特定 getter 的情况下访问?
示例代码: