Javascript:从类内部创建全局作用域函数

Javascript: Creating global scope functions from inside an class

本文关键字:全局 作用域 函数 创建 内部 Javascript      更新时间:2023-09-26

我正在用Javascript创建一个"类",它将处理几个HTML5功能(如视频播放)。

这个Javascript类还生成一个Flash回退,以防浏览器中不存在HTML5功能。

Flash回退文件通过调用全局函数与Javascript进行通信。

我的问题是:

如何让Javascript类生成必要的函数?


据我所知,在不首先使用var定义变量的情况下使用变量会使该变量成为全局变量,但这感觉很粗糙,在严格模式下肯定会失败。

类本身可以绑定到任何变量,因此在不知道这些变量的情况下尝试访问类内的函数将是有问题的。此外,我希望这个代码尽可能的可移植。

EDIT:正如mccainz在评论中所提到的,使用名称空间通常是更好的主意

您可以使用窗口定义全局函数,而无需麻烦严格模式:

function MyClass() {
    // your constructor
    window.globalFunctions = window.globalFunctions || {};
}
MyClass.prototype.createGlobalFunctionFoo = function () {
    window.globalFunctions.foo = function () {
        // your code
    };
};
var myInstance = new MyClass();
myInstance.createGlobalFunctionFoo();
console.log(globalFunctions.foo); // your function

当然,你需要做一些检查,以确保你没有重写现有的函数或其他一些边缘情况,我只是给出了一个直接的答案。