是否可以在 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'
}