是否可以在 JavaScript class 中插入 switch/case 语句?
Is it possible to insert a switch/case statement inside a JavaScript class?
我想在 JavaScript class 中插入 switch/case 语句。在各种情况下,我试图创建一个 class 来显示图书馆导览的特定步骤。所以我问自己是否可以在 JavaScript class 中插入这种语句,以根据 PHP 路由名称执行。可能吗?
class TourUtils {
constructor(routeName) {
switch (routeName) {
case "host":
$(document).ready(function () {
document
.querySelector(".dashboard__tour")
.addEventListener("click", () => {
window.TOUR.start();
});
});
break;
case "Nuovo annuncio":
$(document).ready(function () {
window.TOUR.show("new-ad-page-intro-step");
});
break;
case "Modifica annuncio":
$(document).ready(function () {
window.TOUR.show("new-ad-page-nineth-step");
});
break;
case "Casa annuncio":
$(document).ready(function () {
if ($("#save").is(":visible"))
window.TOUR.show("mod-house-page-intro-step");
});
break;
case "Nuova casa":
$(document).ready(function () {
window.TOUR.show("mod-house-page-second-step");
});
break;
case "Modifica casa":
$(document).ready(function () {
window.TOUR.show("mod-price-page-intro-step");
});
break;
case "Calendario":
$(document).ready(function () {
if ($(".update-btn").is(":visible"))
window.TOUR.show("final-step");
else if (!$(".update-btn").is(":visible")) {
window.TOUR.show("mod-price-page-second-step");
}
});
break;
case "Aggiungi date":
$(document).ready(function () {
window.TOUR.show("add-date-page-intro-step");
});
break;
}
}
}
您可以将代码简化为以下内容。也许这有助于找到您的代码问题。
class TourUtils {
constructor(routeName) {
var routes = {
"host": function () {
document
.querySelector(".dashboard__tour")
.addEventListener("click", () => {
window.TOUR.start();
});
},
"Nuovo annuncio": "new-ad-page-intro-step",
"Modifica annuncio": "new-ad-page-nineth-step",
"Casa annuncio": function () {
if ($("#save").is(":visible"))
window.TOUR.show("mod-house-page-intro-step");
},
"Nuova casa": "mod-house-page-second-step",
"Modifica casa": "mod-price-page-intro-step",
"Calendario": function () {
if ($(".update-btn").is(":visible")) window.TOUR.show("final-step");
else if (!$(".update-btn").is(":visible")) {
window.TOUR.show("mod-price-page-second-step");
}
},
"Aggiungi date": "add-date-page-intro-step"
};
$(document).ready(function () {
var route = routes[routeName];
if (typeof route === 'function') {
route();
} else {
window.TOUR.show(route);
}
}
}
}
我不明白为什么不。
一般来说,在论坛上询问某些代码是否有效之前,您可以做一件非常简单的事情:尝试一下。您可以在 js 文件中尝试它,然后 运行 使用节点或在浏览器的控制台中尝试它。做一个超级简单的测试,然后 运行 它,你会得到答案。
对于“是否可以在 JS class 构造函数中使用 switch case”这个问题,这是我要进行的最小测试
class A {
constructor(a) {
switch (a) {
case 1:
this.a = 'one';
break;
case 2:
this.a = 'two';
break;
default:
this.a = 'something else';
break;
}
}
}
let first = new A(1);
let second = new A(2);
let third = new A(93);
console.log({
test1: first.a,
test2: second.a,
test3: third.a
});
并确保它显示
{
test1: 'one',
test2: 'two',
test3: 'something else'
}
我想在 JavaScript class 中插入 switch/case 语句。在各种情况下,我试图创建一个 class 来显示图书馆导览的特定步骤。所以我问自己是否可以在 JavaScript class 中插入这种语句,以根据 PHP 路由名称执行。可能吗?
class TourUtils {
constructor(routeName) {
switch (routeName) {
case "host":
$(document).ready(function () {
document
.querySelector(".dashboard__tour")
.addEventListener("click", () => {
window.TOUR.start();
});
});
break;
case "Nuovo annuncio":
$(document).ready(function () {
window.TOUR.show("new-ad-page-intro-step");
});
break;
case "Modifica annuncio":
$(document).ready(function () {
window.TOUR.show("new-ad-page-nineth-step");
});
break;
case "Casa annuncio":
$(document).ready(function () {
if ($("#save").is(":visible"))
window.TOUR.show("mod-house-page-intro-step");
});
break;
case "Nuova casa":
$(document).ready(function () {
window.TOUR.show("mod-house-page-second-step");
});
break;
case "Modifica casa":
$(document).ready(function () {
window.TOUR.show("mod-price-page-intro-step");
});
break;
case "Calendario":
$(document).ready(function () {
if ($(".update-btn").is(":visible"))
window.TOUR.show("final-step");
else if (!$(".update-btn").is(":visible")) {
window.TOUR.show("mod-price-page-second-step");
}
});
break;
case "Aggiungi date":
$(document).ready(function () {
window.TOUR.show("add-date-page-intro-step");
});
break;
}
}
}
您可以将代码简化为以下内容。也许这有助于找到您的代码问题。
class TourUtils {
constructor(routeName) {
var routes = {
"host": function () {
document
.querySelector(".dashboard__tour")
.addEventListener("click", () => {
window.TOUR.start();
});
},
"Nuovo annuncio": "new-ad-page-intro-step",
"Modifica annuncio": "new-ad-page-nineth-step",
"Casa annuncio": function () {
if ($("#save").is(":visible"))
window.TOUR.show("mod-house-page-intro-step");
},
"Nuova casa": "mod-house-page-second-step",
"Modifica casa": "mod-price-page-intro-step",
"Calendario": function () {
if ($(".update-btn").is(":visible")) window.TOUR.show("final-step");
else if (!$(".update-btn").is(":visible")) {
window.TOUR.show("mod-price-page-second-step");
}
},
"Aggiungi date": "add-date-page-intro-step"
};
$(document).ready(function () {
var route = routes[routeName];
if (typeof route === 'function') {
route();
} else {
window.TOUR.show(route);
}
}
}
}
我不明白为什么不。
一般来说,在论坛上询问某些代码是否有效之前,您可以做一件非常简单的事情:尝试一下。您可以在 js 文件中尝试它,然后 运行 使用节点或在浏览器的控制台中尝试它。做一个超级简单的测试,然后 运行 它,你会得到答案。
对于“是否可以在 JS class 构造函数中使用 switch case”这个问题,这是我要进行的最小测试
class A {
constructor(a) {
switch (a) {
case 1:
this.a = 'one';
break;
case 2:
this.a = 'two';
break;
default:
this.a = 'something else';
break;
}
}
}
let first = new A(1);
let second = new A(2);
let third = new A(93);
console.log({
test1: first.a,
test2: second.a,
test3: third.a
});
并确保它显示
{
test1: 'one',
test2: 'two',
test3: 'something else'
}