SOURCE

console 命令行工具 X clear

                    
>
console
// 需求是通过ModalFactory方法传入不同的字符串,来构造不同的实例,
// 我不想写大量的switch,case来判断

class Modal {}

class SuccessModal extends Modal {}

class ErrorModal extends Modal {}

class WarningModal extends Modal {}

const modalStatus = {
  success: SuccessModal,
  error: ErrorModal,
  warning: WarningModal,
};

function ModalFactory(status) {
  // return new status() //status is not a constructor
  // 这样new是不行的

  return new modalStatus[status]();
  // 于是我建立modalStatus对象字典解决了我的问题
}

ModalFactory("warning"); //Warning {}
ModalFactory("success"); //Success {}
ModalFactory("error"); //Error {}

// 方法二
// 下面这样做更加直接点,但这样损失了构造函数大写的类名,转为Modal小写的属性名替代了,但是连接关系似乎更加合理
Modal.success = class Success extends Modal {};

// 方法三
// 或者按照下面的写法就保留了大写Success类名,这样不错,就是要多写一句
class Success extends Modal {}
Modal.success = Success;
<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title>Static Template</title>
</head>

<body>

	<h1>hello</h1>
</body>

</html>