JavaScript方法:Can';不要停止传播

JavaScript方法:Can';不要停止传播,javascript,Javascript,我有一个对象文本,它表示应用程序的页面结构。如果满足某个条件,我想跳过一页,转到下一页 请查看以下代码: var someObj = { "page-1": { before: function(x){ switch(x){ case true: break; case false:

我有一个对象文本,它表示应用程序的页面结构。如果满足某个条件,我想跳过一页,转到下一页

请查看以下代码:

    var someObj = {
        "page-1": {
            before: function(x){
                switch(x){
                    case true:
                        break;
                    case false:
                        someObj['page-2'].init(); // HERE, I want to skip to the page-2 init() method, **and not go back!**
                        return false;
                        break;
                }
            },              
            init: function(){
                this.before(false);
                alert("This is page 1!"); // I don't want to see this!
            },
        },          
        "page-2": {         
            init: function(){
                alert("this is page 2!"); // After this alert, I want to STOP, and not go back to the page-1 init() method!
                return false;
            },
        },              

    }

    someObj['page-1'].init();

我不知道如何在“这是第2页!”警报后停止-我总是收到2个警报。所有
返回值均为false
有效吗?如何实现这一点?

您可以让所有函数注意它们调用的其他函数的返回值,实现某种“中止”协议,也可以抛出异常

    "page-2": {         
        init: function(){
            alert("this is page 2!"); 
            throw new Error("Cease and desist");
        },
    },              
这两种方法之间的选择取决于您的需要。

更改
before()
以始终返回布尔值,并使page-1
init()方法的其余部分有条件:

before: function(x){
    if (!x) {
        someObj['page-2'].init();
    }
    return x;
},
init: function(){
    if (this.before(false)) {
        alert("This is page 1!");
    }
},

我要做的是检查before()函数返回的内容,并根据该值执行init()方法的其余部分,如下所示:

if(this.before(false)){
  do stuff
}else{
  do something else
}

这里没有“传播”,只有方法调用。退出的唯一方法是抛出异常。对不起,是的,术语错误。好的,谢谢。这似乎是最合乎逻辑的。非常感谢。