javascript - 在 JavaScript 中创建全局函数

标签 javascript function

我正在尝试创建一个全局函数,我可以在 .js 文件内的任何位置使用它。

我们有超过 50 个 javascript 文件连接在一起,在每个文件中我希望能够在任何地方使用这个库。

本地化.js

(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(factory);
    } else if (typeof exports === 'object') {
        // Node. Does not work with strict CommonJS, but
        // only CommonJS-like enviroments that support module.exports,
        // like Node.
        module.exports = factory();
    } else {
        // Browser globals (root is window)
        if (typeof Localized !== 'undefined') {
            throw 'Localized" already in use';
        }

        root.Localized = factory();
    }
}(this, function () {

  var _strings,
      _readyCallback,
      _isReady = false,
      _requestedStrings = false;

  function ready( data ) {
     _readyCallback = _readyCallback || function(){};

    function domReady() {
      // If the DOM isn't ready yet, repeat when it is
      if ( document.readyState !== "complete" ) {
        document.onreadystatechange = domReady;
        return;
      }
      document.onreadystatechange = null;
      _strings = data;
      _isReady = true;
      _readyCallback();
    }

    domReady();
  }

  // Get the current lang from the document's HTML element, which the
  // server set when the page was first rendered. This saves us having
  // to pass extra locale info around on the URL.
  function getCurrentLang() {
    var html = document.querySelector( "html" );
    return html && html.lang ? html.lang : "en-US";
  }

  var Localized = {
    get: function( key ) {
      if ( !_strings ) {
        console.error( "[goggles.webmaker.org] Error: string catalog not found." );
        return "";
      }
      return ( _strings[ key ] || "" );
    },

    getCurrentLang: getCurrentLang,

    // Localized strings are ready
    ready: function( cb ) {
      if ( !_requestedStrings ) {
        _requestedStrings = true;
        _readyCallback = cb;

        function onload( data ) {
          ready( data );
        }
        onload.error = console.log;

        var xhr = new XMLHttpRequest();
        xhr.open('GET', '/strings/' + getCurrentLang() + '?bust=' + Date.now(), false);
        xhr.send(null);
        if (xhr.status !== 200) {
          err = new Error(id + ' HTTP status: ' + status);
          err.xhr = xhr;
          onload.error(err);
          return;
        }
        onload(JSON.parse(xhr.responseText));
      };
      if ( _isReady ) {
        _readyCallback();
      }
    },

    isReady: function() {
      return !!_isReady;
    }
  };
  return Localized;
}));

所以我希望能够进入任何 50 文件并执行 Localized.get("something"); 但我什至在网络控制台中都没有可用的Localized对象。例如,如果您有 jQuery,您可以在 Web 控制台中执行 $ 操作,并且可以在那里执行任何操作。

最佳答案

你看过Three.js的全局函数吗?非常容易理解!

(function (global, factory) {
	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
	typeof define === 'function' && define.amd ? define(['exports'], factory) :
	(factory((global.THREE = global.THREE || {})));
}(this, (function (exports) { 'use strict';

关于javascript - 在 JavaScript 中创建全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18282610/

相关文章:

javascript - 低效函数 - 如何在 Highchart 中为数据点分配颜色

c - 即使函数完成执行后,局部变量值和地址也会保留

javascript - 在 jQuery 中将事件绑定(bind)到元素的有效方法

javascript - 如何使用 jest 模拟从方法内部启动的构造函数

function - 我想将一个向量的引用传递给一个函数,然后在那里修改它并作为向量返回

c - 如何从文本文件读取数据并将其存储在我的 C 程序中以便在函数中使用?

PHP:我可以声明一个具有可变数量参数的抽象函数吗?

javascript - 将 JSON 对象转换为 JS 键/值对数组

javascript - 在标记的中心创建文本

javascript - 安装 Node 模块错误