问题标签 [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模块模式:从私有函数向模块添加私有属性
如何修复createBar()
以便bar
在与财产相同的级别创建私有财产foo
?
这就是模块的工作方式:
更新:
这就是我现在正在做的事情:
但不知何故我不喜欢它。你会怎么做,在私有函数之间共享状态信息?
javascript - Javascript 显示模块模式 - 在函数返回后公开初始化变量
我一直在使用 Javascript Revealing Module 模式,我喜欢它在公共接口和内部之间提供的清晰分离。但是,我不断遇到一种情况,这让我想知道我的整体使用模式是否正确,或者我是否应该使用该模式的一些变体。
问题是,当传递给模块的 init 函数并私下存储以供内部使用时,也需要在 Knockout 绑定表达式或其他模块中公开公开。模块的返回语句会立即执行,稍后会调用 init 函数,通常会传递一些动态参数,例如在 Razor 视图中的脚本块中呈现的 Ajax URL 或原始 JSON。因为模块的 return 语句只返回私有变量的副本而不是引用,所以我在 init 函数中设置该私有变量不能更改已经返回的内容。
我的解决方法是在一个函数中包装诸如“urls”之类的对象,然后通过 productsModule.getUrls() 访问它们。然而,这变得非常混乱,特别是如果变量是一个 Knockout observable,它本身就是一个函数,因此为了评估它,我需要使用像 productsModule.getMyObservable()() 这样的双括号。
有没有更好的方法来使用至少接近揭示模块模式的东西来获取最新的内部值?
javascript - javascript:构造函数与揭示模块模式以供一次性使用
我已经了解到构造函数可以被实例化以在 javascript 中创建新对象,该对象具有自己的 _proto_ 属性,并且还将属性“原型”赋予构造函数。
在这里,init 可以这样调用:
假设我只实例化一次并且不再实例化,如果我不打算使用 MyController.prototype 提供的所有原型属性,这不是矫枉过正吗?
问题:相反,我可以不使用显示模块模式进行这样的编码吗?
在这里,init 可以这样调用:
在这种情况下,如果我尝试访问 myController 中不存在的任何属性,javascript 引擎将不会尝试查找该属性是否存在于原型链中的任何位置,从而节省了我的时间。
或者实例化我忽略的函数还有其他优点吗?
javascript - 使用模块模式访问 jQuery 回调中的私有变量
下面的执行没有错误,但 DOM 没有更新。
更新
与上面的代码相反,我实际上并没有在 jQuery 就绪事件中调用 Cart.init() 。
javascript - Javascript:混合构造函数模式和显示模块模式
有什么办法可以让我拥有一个扩展通过显示模块模式创建的对象的 Javascript 类?我尝试了以下代码,但有没有实现同样的目标?
javascript - 显示模块模式 (RMP) 的缺点
我最近熟悉了显示模块模式 (RMP),并且我已经阅读了很多关于它的文章。
这似乎是一个非常好的模式,我想开始在一个大项目中使用它。在我正在使用的项目中:Jquery、KO、requireJS、Jquery Mobile、JayData。在我看来,它非常适合 KO ViewModels。
具体来说,我想使用它的这个版本。
我找不到的一件事是使用这种模式的缺点,是因为没有(我很难相信)吗?
在开始使用它之前我应该考虑什么?
javascript - 使用初始实例化类进行 Jasmine 测试
我在我的 JavaScript 中使用了显示模式和初始类实例化。我也在使用 Jasmine 来测试这个类,但需要一种方法来在每次测试运行之前重置 myNamespace.myViewModel 的状态(这是一个简单的示例,但想象一个具有多个变量的复杂视图模型)。
这是一个示例类:
在茉莉花中,我从以下内容开始:
有没有办法做到这一点?
javascript - JavaScript 揭示模块模式变量范围
我有一个问题,我无法访问函数内的变量:
编辑
我忘了补充说我workerPage.grid = $("#grid").data("kendoGrid");
在 jQuery 上设置了这个$(function(){});
我不能claimsGird
在保存函数中使用变量,我必须通过workerPage.grid
. 不是像其他变量一样viewModel
工作正常。这是片段:
这是完整的脚本:
javascript - Javascript revealing module pattern Noob
I'm starting Addy Osmani's amazing book on javascript design patterns but can't seem to get off the ground. Can anyone tell me what's wrong here with my approach (I'm using Raphael, just for fun.):
module-pattern - 创建一个模块的多个实例
我以为我开始很好地理解 JavaScript,但显然不是。让我用一个例子来解释我的问题。首先,我定义了以下模块:
然后我创建 2 个实例:
现在我更新计数器变量(因为它是公开的)并发出一些警报。到现在为止还挺好。
现在最后我说以下几点:
这是我不明白的一点。为什么这个警报 0?我以为第一个警报是 5,第二个是 10。
如果有人能解释上述内容如何工作或为我指明正确的方向,我将不胜感激。谢谢