我正在创建一个"类"在Javascript中将处理几个HTML5功能(如视频播放)。
如果浏览器中没有HTML5功能,此Javascript类还会生成Flash后备。
Flash后备文件通过调用全局函数与Javascript通信。
我的问题是:
如何让Javascript类生成必要的函数?
据我所知,使用变量而不首先使用var
来定义变量会使变量成为全局变量 - 但这会让人感觉很乱,并且肯定会在严格模式下失败。
类本身可以绑定到任何变量,因此尝试访问类中的函数而不首先知道这些变量会有问题。此外,我希望这段代码尽可能便携。
答案 0 :(得分:1)
编辑:正如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
当然你需要做一些检查,以确保你没有重写现有的功能或其他一些边缘情况,我只是给了一个直接的答案。