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

0 投票
1 回答
340 浏览

javascript - Javascript 模块模式 - Object.create

关于这里到底发生了什么有点困惑。

给出这个简单的代码:

按照这个简单的操作:

所以据我了解,对返回的对象形式 Object.create 进行的操作仍然会影响该对象的原型,因此当您创建一个新对象时,他的原型会发生变化,从而产生一个“修改”版本。

这在很多层面上似乎都是错误的,谁能解释这里发生了什么?

使用以下模式无法重现此行为:

所以我怀疑 $.extend 应该归咎于此。

任何输入都会很棒!

0 投票
1 回答
78 浏览

javascript - 显示模块模式中的私有成员

由于该函数是立即调用函数表达式 (IIFE),因此 app var 被分配了返回的对象字面量。但是私有成员是通过什么方式返回的呢?成员 foo 是否不存在于应用程序中,因为它没有在任何公共方法中引用?对 bar 的引用如何存储在 app 变量中?

0 投票
1 回答
1613 浏览

javascript - 类似于 Revealing Module Pattern 结构的 TypeScript 代码

我想将我编写的一些 JavaScript 代码转换为 TypeScript。作为一名 JavaScript 开发人员,我对 TypeScript 语法和思维方式相当陌生。

让我头疼的是,我不得不将一些使用 Revealing Module Pattern 的代码转换为 TypeScript。

一个例子如下:

我认为的一种解决方法是:

这有效,但它很难看。

有什么建议可以让这变得更好吗?

0 投票
1 回答
58 浏览

javascript - Is there a way to prototype a namespace in a limited scope?

I have a prototyped function that i would like to use it in a limited scope in order to provide it with a jquery plugin.

Is that possible?

Thanks

0 投票
0 回答
26 浏览

javascript - 从显示模块模式返回值

我今天只是在学习揭示模块模式,到目前为止我做得还不错。但是我想知道当一个显示模块模式函数从另一个显示模块模式中调用时,你可以返回一个值给调用者模式函数吗?

例如,我有一个包含多个功能的位置模块模式,我希望使用另一个模块模式。这是它的代码:

位置显示模块模式

在我的另一个揭示模块模式(如下)中,我正在调用 getUserLocation 函数(又名 getCoords),目前,它 console.logs 用户位置(myLocation)。

但是,当我更改 console.log(myLocation) 以返回 myLocation,然后返回控制台日志位置(在函数 handleUserData 中)时,我得到未定义。

我的理论是我想获取用户的位置,然后在 Park 显示模块模式函数中使用它。

所以我的问题是,是否可以将一个显示模块模式的值返回到另一个?如果没有,我应该研究其他方法来帮助我解决我的问题吗?

编辑

根据评论中的帮助,我能够使用以下方法解决此问题:

地点

公园

0 投票
2 回答
328 浏览

javascript - Javascript 承诺不会延迟函数执行

我在 Chrome 中使用 ES6 javascript 承诺,并且无法理解为什么在函数 _getStatus()中执行的承诺没有在成功处理程序中返回 结果参数,这将导致包含“完成”的警报框。相反,我收到一个警告框,上面写着“未定义”。

0 投票
1 回答
1080 浏览

javascript - 使用 Require.js 和显示模块模式的 JavaScript 继承

问题:

过去两周我一直在研究的一个看似简单的问题(请放轻松,因为我是新手!):

在使用 Require.js 和 Revealing Module Pattern 时,如何巧妙地在 JavaScript 中实现继承?


例子:

这是一个示例模块,它是某种类型的“ Component”的基类:

接下来我想实现CakeComponent应该继承所有内容Component并允许我编辑/添加方法和属性:

首先,我不确定这是否完全有意义,但其次,我的 CakeComponent 感觉有点恶心,因为现在我CakeComponent到处都有这种冗余,我不得不“重新揭示” initandupdate方法。

我真的更喜欢这样的东西(我意识到这没有意义,它实际上只是伪代码):

任何提示或建议将不胜感激。谢谢。


更多详细信息

  • 也许我应该总是在define包装器中创建一个类对象?我见过人们这样做,但在我遇到这个问题之前似乎没有必要。
  • 函数对象上的.call()方法在这种情况下是否有用?例如使用Component.call()
  • @Bergi 请参见下文:

0 投票
1 回答
58 浏览

javascript - 什么是显示模块面板的正确大小写约定(javascript)

使用显示模块模式时,函数和属性的正确起始案例是什么?我在这里显示了小写的函数和大写的属性,但这感觉不正确。

0 投票
1 回答
19 浏览

javascript - 我应该如何打包插件函数以在验证指令中使用?

我正在研究以下验证指令,在这个答案中向我建议:

然后,当我将此指令应用于 html 元素时,以 形式bk-ng-validation="phoneNumber",我的指令调用此函数:

addValidationFor_phoneNumber目前在全局命名空间中,只是为了我的概念证明,但我希望使用一个显示模块来组织可能成为相当多的验证功能的东西。还是因为我在 Angular 内部工作,所以我应该遵循其他一些模式?我怀疑我可以做一些事情,比如为显示模块声明一个常量并将其注入指令中,但我想我会在走错路之前问这个问题。

0 投票
2 回答
946 浏览

javascript - JavaScript Revealing Module Pattern 全局变量未定义

我正在尝试使用显示模块模式来确定我页面上的 JavaScript 范围,这样我就不会污染全局命名空间。

出于某种原因,如上面的评论所示,myModule当我去使用它时是未定义的。为什么?