我从闭包返回的函数在外部范围内是否可用
Will functions I return from closures be available in the outer scope?
离开javascript一段时间后,我正在构建一个小库,并且可能想多了。 我把我的图书馆包裹在一个封闭中,虽然我知道我可以用类似 window.namespace.function
的东西返回我想要的东西,但我想知道我是否可以更优雅地做这样的事情:
(function($){
var config = {...}
var namespace = {
doStuff: function() {
// . . .
},
}
return namespace
})(jQuery)
加载此脚本后,用户是否能够使用类似 namespace.doStuff()
的内容调用我的库?
此外,如果用户只是在他们自己的闭包中复制并粘贴我的库,那么我的命名空间是否在其闭包中可用,但不能作为全局?
只有当您将其分配给某些内容时,它才在外部范围内可用。 照原样,您正在返回它,但不将其分配给任何东西,因此它不可用。
您可以像这样分配它:
var ns = (function($){
var config = {...}
var namespace = {
doStuff: function() {
// . . .
},
}
return namespace;
})(jQuery);
然后,您可以从外部作用域调用 doStuff()
函数,如下所示:
ns.doStuff();
相关文章:
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 如何使用D3生成特定范围内的随机颜色
- 将自定义css保持在角度范围内
- Angular JS-文本框未在独立范围内更新
- cookie不在网站范围内
- 获取给定JavaScript范围内的解析函数
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- JavaScript-仅验证数值并且在范围内
- JS:从数组中查找特定范围内的最低/最高数字
- 试图检查表单中的值是否为一个设定范围内的数字
- 在十进制范围内搜索
- 基于日期范围的一组日期范围内的天数
- 如何在 Google 应用脚本中 sendEmail 函数的范围内的唯一非空白列中返回值
- 将数组传递给函数或确保它在范围内
- socket.io 客户端是否必须存在于全局范围内
- 查找某个日期范围内的可用天数
- 网站范围内jQuery/javascript选择器的最佳实践
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 我从闭包返回的函数在外部范围内是否可用
- 是否可以更改外部范围内的变量