如何不在全球范围内公开第三方库?

时间:2013-11-30 17:06:27

标签: javascript bookmarklet

我正在编写一个书签,它使用另一个第三方库来执行其部分功能。如何在不在全局范围内公开库的情况下使用书签中的第三方库?

源代码目前正在提交 - https://github.com/shanti2530/bookmarklets 有问题的库是moment.js,如果用户使用书签,目前正在全局范围内公开。

1 个答案:

答案 0 :(得分:0)

由于您只是将moment.js代码包含在自己的bookmarklet中,因此您可以将moment.js代码放在外部函数中。这将使您可以使用它。

要不创建全局变量,您必须编辑moment.js源,因为它显式创建全局符号,而不管它是如何包含的。我没有广泛研究它的源代码,但看起来函数makeGlobal()是定义其接口的地方。您可以修改它以将时刻函数添加为您在函数f()中声明的对象的方法,这样就不会影响全局范围。

看起来你会修改这一行:

// makes moment function globally available
this['moment'] = moment;

更改moment()功能的访问方式。