从函数的返回值创建全局变量

时间:2014-07-17 18:18:49

标签: javascript

我正在寻找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;

2 个答案:

答案 0 :(得分:2)

是的,在这种情况下,因为getPubSubz只在一个地方被调用,在声明它之后,它可以安全地被内联。

很难确切地说出作者的想法,但是在不断增长的代码库中,拥有“getter”函数可能会有一些价值,如果需要获取pubsubz对象的行为可以修改它更先进的逻辑。

答案 1 :(得分:2)

绝对是。

在这种情况下,使用吸气剂的原因只有两个:

  1. 以前在getter中有一些额外的代码(可能是日志记录)
  2. Addy Osmani刚刚遵循良好做法*,包括一个getter甚至添加了将来添加附加代码的机会。
  3. 通过GitHub的力量,我们实际上可以eliminate option one,因为吸气剂是以其当前状态添加的 - 所以我认为我们可以确定地说这只是一个良好实践的问题。 / p>

    *正如jantimon在下面的评论中提到的,在大多数情况下(包括这个)并不是特别有利,并且此代码不一定需要作为示例。 < / p>