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

标签 javascript oop

我正在 Javascript 中创建一个“类”,它将处理多个 HTML5 功能(例如视频播放)。

此 Javascript 类还会生成 Flash 后备,以防浏览器中不存在这些 HTML5 功能。

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

我的问题是:

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

<小时/>

据我所知,使用变量而不首先使用 var 定义它将使该变量成为全局变量 - 但这感觉很hacky并且在严格模式下肯定会失败。

类本身可以绑定(bind)到任何变量,因此在不首先知道这些变量的情况下尝试访问类内部的函数将会出现问题。我还希望这段代码尽可能可移植。

最佳答案

编辑:如mccainz所述在评论中,使用命名空间通常是更好的主意

您可以使用 window 来定义全局函数,而无需打扰严格模式:

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
<小时/>

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

关于Javascript:从类内部创建全局作用域函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26404194/

相关文章:

javascript - 替换指令内的值而不替换整个指令

javascript - 如何在 JavaScript 中将字符串数组转换为对象数组?

php 魔术方法 __set

c++ - 在定义自定义接口(interface)时继承库类

javascript - 使用按钮计数器更新 Chart.js

javascript - 仅搜索 ui.bootstrap typeahead 中的特定字段

javascript - 在 Javascript 中调用对象方法时不是函数类型错误

swift - Swift 中的只读可变字段

javascript - jQuery Animate 和 CSS 间歇性工作

objective-c - Swift 中的面向协议(protocol)编程是什么?它带来了什么附加值?