问题标签 [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 - 在显示的模式应用类之外到达 btn 事件
我有一个具有启发性的应用类。我怎样才能在
感谢btnMenu
之外进行活动。model
更新 我更改了我的代码,如你所见。并添加一个返回函数
在将我的模块包含到我的网页调用之后是这样的,
bu 控制台日志为空。
javascript - (揭示)模块模式、公共变量和返回语句
我试图了解(显示)模块模式中的public` 属性是如何工作的。Carl Danley “ The Revealing Module Pattern ”指出的一个优点是:
显式定义的公共方法和变量,可提高可读性
让我们看一下这段代码(小提琴):
null
调用时返回a._public
。我现在可以操纵该公共财产,例如a._public = 'public';
. 但我不能从我的对象中改变它。或者至少这些更改没有通过。我有点期待它会"public"
像之前通过 - 方法更新的那样init
。
这实际上是否意味着,我不能有任何方法来处理公共属性?那么这种模式下的公共属性就没有意义了,对吧?我也试过这个没有运气(小提琴):
return
最后但并非最不重要的一点是,我对整个声明有疑问。为什么不能只使用return this;
公开所有内容?应该是自this
调用函数的上下文,它不应该只返回其中的所有内容吗?为什么我必须创建另一个返回的对象?在这个小提琴中,它返回window
对象。
javascript - 返回显示模块模式
我在这里阅读了 Addy 关于揭示模块模式的书。但是,如果您执行示例代码,它实际上会返回 undefined。解决方法是在每个调用的函数之前添加“return”。如果使用 RMP,我应该为每个调用的函数添加返回吗?这是使它工作的正确方法吗?我错过了什么?
http://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript
javascript - 揭示模块模式实例化和命名约定
在显示模块模式的示例中,它通常与立即调用的函数表达式一起使用,如下所示:
在定义后立即创建模块的实例。所以我的问题是:关于 RMP 有什么东西可以阻止我们在一个地方定义它,然后再实例化它,可能不止一次?像这样:
JSHint 让我感到奇怪,因为我曾经将 'foo' 大写并收到警告说它不是构造函数(这是真的),所以它不应该以大写字母开头。所以我的第二个问题是,对于以后使用的变量存储模块定义,建议使用什么命名约定?
PS 我知道 RMP 被一些人认为是一种反模式,但这不是我要问的。我们也可以谈论常规的模块模式。
javascript - Javascript:揭示模块模式。访问私人成员
我有一个 javascript 库使用“显示模块模式”公开其成员。我有一个特殊的需要,我需要访问它的Private Member。有人可以在这方面帮助我吗?有什么提示和技巧吗?如果有人能对此有所了解,我将不胜感激。提前致谢。
反正有没有访问“ privateFunction ”????
有什么提示和技巧吗?如果有人能对此有所了解,我将不胜感激。提前致谢。
javascript - 如何在显示模块模式中使用 clearInterval()
我正在编写一个setInterval
在显示模块模式中使用的计时器函数。我可以让计时器正常启动,但我无法停止间隔。
有任何想法吗?
javascript - javascript揭示模块模式扩展建议
我想在 JS 中实现模块模式。我在谷歌上关注了一些帖子并开始编写自己的帖子。这是我想要达到的目标
我希望所有这些模块都在单独的文件中。
这是 mns.js 文件代码(仅用于命名空间,其中没有函数)
这是 math.js 代码(我希望它作为 mns 的子模块)
我期待 application.js 会像下面这样调用
现在,Cannot read property of undefined
调用 incrementCounter 和 resetCounter 时出现错误。请指导我。
javascript - 揭示模块模式变量问题
我是 Web 开发的新手,最近发现了揭示模块模式。但是我在将它实施到我的 JS 中时遇到了问题。
在我的 selectScroll 函数中,它无法正确运行,直到我将“$navBtn”替换为“$('.navBar .btn')”。当我声明变量时我做错了什么吗?
另外,如果我
$navBtn.on('click', sectionScroll());
用
$('.navBar .btn').on('click', sectionScroll());
sectionScroll 函数替换,总是给我这个错误:无法读取未定义的属性“preventDefault”
编辑:感谢@Bergi on this page ,我发现了问题。我现在的问题是,将这种解决方案与显示模块模式一起使用的最佳方式是什么?是否将 defer 属性放在 JS 上:
<script type="text/javascript" src="js/app.js" defer></script>
或者在使用显示模块模式时是否有更好的解决方案?
javascript - 在 Revealing Module Pattern 中返回一个 jQuery Promise
我正在使用 Revealing Module 模式编写一个自定义库来处理特定的 cookie,并尝试使用 jQuery Promise 作为 cookie 的“Getter”函数的返回值,以防止调用该函数的人在初始设置之前更新该函数,从而保持同步。
见下文:
当尝试使用myUtilities.stateManager.getStateCookie()
. 我希望此调用返回最近适用状态的两个字符的字符串。相反,我得到了返回的 Promise 对象。
为什么返回 Promise 而不是字符串,需要更改哪些内容才能返回所需的字符串?
感谢您的时间。
javascript - 需要一个使用显示模块模式的模块
我正在尝试require
一个模块,它是一个自调用 Javascript 函数,并在我传递一个参数时传递给require
它。“必需”对象总是说“对象不是函数”。
以下代码是否可能,如果可以,我哪里出错了?
模块
代码中的用法
提前感谢您的帮助