根据函数的返回值创建全局变量
Creating a global variable from a function's return value
我正在查看Addy Osmani关于发布/订阅模式的要点:
https://github.com/addyosmani/pubsubz/blob/master/pubsubz.js他将对象呈现为一个全局对象,如下所示:
;(function ( window, doc, undef ) {
var topics = {},
subUid = -1,
pubsubz ={};
....
getPubSubz = function(){
return pubsubz;
};
window.pubsubz = getPubSubz();
创建getPubSubz
函数的价值是什么?这样写不是更直接吗:
window.pubsubz = pubsubz;
是的,在这种情况下,因为getPubSubz
只在一个地方调用,在声明它之后立即调用,所以可以安全地内联它。
很难确切地说出作者的想法,但在不断增长的代码库中,如果获取pubsubz
对象的行为需要更高级的逻辑,那么可以修改"getter"函数可能会有一些价值。
绝对可以。
在这种情况下使用getter只有两个可能的原因:- 先前在getter(可能是logging)中有一些额外的代码
- Addy Osmani只是遵循良好的实践*,并包括一个getter -甚至增加了将来添加额外代码的机会。
通过GitHub的强大功能,我们实际上可以消除选项一,因为getter是在当前状态下添加的,所以我认为我们可以肯定地说,这只是一个良好的实践问题。
*正如jantimon在下面的注释中所暗示的那样,这在大多数情况下(包括本例)并不是特别有利,并且这段代码不一定需要作为示例来遵循
相关文章:
- 在节点中创建文件全局变量
- 创建要在其他函数中使用的全局变量
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 如何在javascript中创建全局变量(使用webpack)
- 如何为HTML属性/选择器创建全局名称空间或变量
- 如何使用局部变量创建全局变量
- 在 Javascript 中创建全局变量时是否需要指定对象类型
- TypeScript:从模块创建全局变量
- 如何在函数中创建全局变量
- YUI3 - 创建全局变量以避免使用 .use(..);
- 这行是在创建全局变量吗
- 如何在WSO2ESB中创建全局变量-必须是可更新的
- 如何从 Tumblr 主题选项的输出创建全局变量
- 根据函数的返回值创建全局变量
- 如何强制函数创建全局变量
- 如何在jQuery Slider函数中创建全局变量
- 创建全局变量js
- 如何创建全局变量的查询和可用的javascript
- 如何在Geddy中创建全局变量
- 在JavaScript中如何处理带有破折号的ID'(自动创建全局变量)