javascript - 如何在 javascript/jQuery 中创建命名空间和类

标签 javascript jquery

就像 C# 或 Java 将我所有的 jQuery 代码放在一个 .js 文件中一样,如下所示:

namespace MySite
{
    class HomePage
    {
        function Init(params) { /*...*/ }
        //...
    }

    class ContactForm
    {
        function Validate() { /*...*/ }
        //...
    }
}

所以你可以这样调用它:

$(function () {
    MySite.HomePage.Init({a : "msg"});
});

我有这段代码,但不起作用:

$.namespace = function () {
    var a = arguments, o = null, i, j, d;
    for (i = 0; i < a.length; i = i + 1) {
        d = a[i].split(".");
        o = window;
        for (j = 0; j < d.length; j = j + 1) {
            o[d[j]] = o[d[j]] || {};
            o = o[d[j]];
        }
    }
    return o;
};

$.namespace('$.mysite');

$.mysite.Home = function () {

    function Home(params) {
        //...
    };

    Home.prototype = function () {
        Init: function () {
            alert("lol");
        }
    }
}; 

在 jQuery 中可以吗? (类似的东西或建议/示例可以使我的 jquery 代码井井有条。) 感谢您的时间和回答(抱歉我的英语不好)。

最佳答案

为什么不把它放在一个js对象里面呢?

var _o = {};
_o.module1 = {};
_o.module2 = {};

_o.module1.someFunc = function(){//code};
_o.module2.someFunc = function(){//code};

关于javascript - 如何在 javascript/jQuery 中创建命名空间和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7510287/

相关文章:

javascript - .update 不起作用——Meteor

javascript - 如何在网站完全加载之前隐藏加载屏幕?

php - Ajax表单多次提交。有时

javascript - 如何使用 javascript 触发在 javascript 上创建的按钮?

javascript - 当来源为 http 且目标 url 为 https 时,如何在本地网络中发出 POST 请求?

javascript - 设置显示:none if element contains no text

javascript - 在数组中按数组排序对象?

javascript - DOM插入: Are some tag types faster when inserting into DOM?

javascript - 在 Script# 中声明一个 javascript 对象字面量

javascript - 一次在一个元素上调用自定义函数