JavaScript中的嵌套类

JavaScript中的嵌套类,javascript,class,Javascript,Class,我是一个JavaScript的新手,我需要一个新的项目。现在我有一个问题: var main = new function() { this.init = new function() { //access something.init(); }; this.something = new function () { this.init = function(){ //do something //execu

我是一个JavaScript的新手,我需要一个新的项目。现在我有一个问题:

var main = new function() {
    this.init = new function() {
        //access something.init();
    };
    this.something = new function () {
        this.init = function(){
        //do something
        //execute somethingother()
        };
        this.somethingother = function(){
        //do something          
        };
    };
};

main.init();

你能帮我吗?

JavaScript没有现成的类。您需要自己实现类


一个流行的实现是,如果您不想编写自己的实现。

如果您想在函数中嵌套函数,您可以,但您应该学习javascript语法、词法范围和变量提升的工作原理,以及总体上阅读Douglas Crockford的文章(或观看他的视频)

您显示的代码将不起作用,请尝试查看我对它的修改,并理解其中的差异

var Main = function() {
    /* this function is a constructor */
    var m = this; // store scope
    // do your init stuff

    m.boringCollection = {
        /* simple object with function inside */
        /* notice JSON style formatting */
        doStuff : function(){
            //do something
        },
        doOtherStuff : function(){
            //do something else         
        };
    };
    m.coolConstructor = function () {
        var cc = this; // store scope             
        var sleep = true; // just an example variable
        cc.moveMyself = function(){
            //do something          
        };
        cc.init = function() {
            sleep = false; // just an example
            cc.moveMyself(); // will work
            cc.work(); // will FAIL, because function work is defined after its called
        };
        cc.work = function() {
            // do some work
        };
    };        
};

var main = new Main(); // make new instance of Main 
main.boringCollection.doOtherStuff(); // will work

main.coolConstructor.init(); // will NOT work 
var scrappy = new main.coolConstructor(); // make new instance of m.coolConstructor
scrappy.init(); // will work

这似乎不是一个实际问题。这很可能是一个家庭作业,找出所有可能和将会出错的地方。“一个非常困难的家庭作业”。现在我恨你了。你自己做作业。这对你的未来有好处。别开玩笑了,谢谢你的回答。嗯,也许我用错词了(课堂)。我想这样做,但我不知道如何从main.init或main.something.init访问其他函数。@FranzFinke-Javascript没有类,但它有返回对象实例的构造函数(只是用
new
关键字调用的函数)。困惑了吗?:)我相信,JavaScript不是一种真正的oop语言,因为它只使用对象,而没有类^^^你是对的,它不是一种“经典”的面向对象语言,它是一种“原型”的面向对象语言。。。