【问题标题】:How to make a global javascript function and variable?如何制作全局javascript函数和变量?
【发布时间】:2015-03-20 03:35:50
【问题描述】:

我在文件hello.js 中有一个变量和一个函数,如下所示:

我想调用上述函数并从另一个文件访问变量,比如app.js,(两个文件在同一个文件夹中)var width = 500;

function reset() {
//some code
}

我应该怎么做。

谢谢。

编辑:

其实,

我在另一个函数里面有上面的变量和函数,(我之前没有提到,我想我会得到提示并让它工作):

是这样的:

var Engine = (function(global) {

var width = 500;
var canvas = doc.createElement('canvas'),
canvas.width = 500;

function reset() {
//some code
})(this);

现在我正在尝试访问这些函数和变量,如下所示:

console.log(Engine.canvas.width);
Engine.reset();

它无法识别reset()canvas

【问题讨论】:

  • JS 对文件和文件夹一无所知。

标签: javascript


【解决方案1】:

根据您的编辑,您必须通过返回/公开变量来公开变量(或者您可以为 Engine 实例创建具有方法/属性的构造函数...)

var Engine = (function() {
    var width = 500; // private

    var canvasEl = document.createElement('canvas');
    canvasEl.width = 500;

    function reset() {
        // some reset code
    }

    return {
        canvas: canvasEl,
        reset: reset
    }
})(this);

console.log(Engine.canvas.width) // 500

【讨论】:

    【解决方案2】:

    您可以将任何东西分配给窗口对象,然后就可以从任何地方访问它。

    window.width = 500;
    

    那么您可以使用 window.width 从任何地方获取值。

    【讨论】:

    • 与问题中所示的var width相比,创建了一个全局变量。
    • 是的,确实如此,但我认为分配给窗口对象会使全局变量更加明确,我认为这很好,因为您始终可以检查窗口对象以查看全局值是什么你有。
    • 如果您没有明确分配给window,您还可以检查window 对象中的全局变量。不过我同意你的看法。
    • 如果您要向全局范围添加变量,应强烈重新考虑使用诸如width 之类的名称,因为它太通用且太可能被其他代码使用
    【解决方案3】:
    //app.js
    var Engine = function(global){
    
     var engine = {
        width: global.width,
        reset: function(newValue){
          something.width = newValue;
          global.width = newValue;
        }
     }
     return engine;
    

    }

    var myEngine = new Engine(window);

    console.log(myEngine.width); myEngine.reset('600px');

    //secondFile.js //window.width = '500px'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-30
      • 2023-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多