JavaScript 多命名空间

标签 javascript prototype namespaces

我有一个很大的 js 文件,我想将其分成多个命名空间。

  1. 与将所有内容都放在一个命名空间中相比,这是一种好/坏的方法吗?

  2. 在 NAMESPACE_FIRST 中如何调用 map 构建?

    var NAMESPACE_FIRST = {
        init:function() {
            alert("onload functions");
        },
        this.map:function() {
            this.length = 0;
        },
        this.map.prototype.build:function(){
            return this.length;
        }
    };
    
    var NAMESPACE_SECOND = {
        upload:function() {
              //do something
        },
        delete:function() {
              //do something
        }
    };
    
    $(function () {
        NAMESPACE_FIRST.init();
    });
    

最佳答案

好问题!

首先,您的 JavaScript 有点错误。要达到我认为您想要的效果,您的第一个命名空间应如下所示:

var NAMESPACE_FIRST = {

    init: function() {
        alert("onload functions");
    },
    map: function() {
        this.length = 0;

        NAMESPACE_FIRST.map.prototype.build = function() {
            alert("1");
            return this.length;
        }
    }
}

因此,回答问题 2,您的 onready 将类似于:

$(function () {
    NAMESPACE_FIRST.init();

    var obj = new NAMESPACE_FIRST.map();
    obj.build();
}

关于问题 1,我对这两种方式都没有真正的看法。

关于JavaScript 多命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3455254/

相关文章:

javascript - 如何使用 Javascript 获取作为参数传递的函数名称以用于回调目的

c++ - 如何避免因 Koenig 查找而导致的标准命名冲突

javascript - 在 slideUp jQuery 上跳转

javascript - 使用Protractor,如何选择具有唯一类的div并测试它是否显示?

javascript - 为什么要在函数及其原型(prototype)上设置属性?

javascript - 原型(prototype)中基本类型的行为

c# - 多级命名空间

interface - 我如何访问 Clojure 库中的记录?

javascript - 具有多个文件的 JSLint

javascript - 如果我为同一事件设置 "listenToOnce"多次触发会发生什么