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-1init()方法的其余部分有条件:
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
}
这里没有“传播”,只有方法调用。退出的唯一方法是抛出异常。对不起,是的,术语错误。好的,谢谢。这似乎是最合乎逻辑的。非常感谢。