Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
class Cmd0 {
  constructor(name, arg1, arg2 = null) {
    this.name = name;
    this.arg1 = arg1;
    this.arg2 = arg2;
  }
// . . .
}
class Cmd extends Cmd0 {
  constructor(name, arg1, arg2 = null) {
    myMap =  new.target.getMyMap() // defined in sub-classes
    if (!myMap.has(name)) { super(null, null, null); return } // fail the constructor
    super(name, arg1, arg2)
  }
  
  getMyMap() {
    return new Map(); // to be overridden or extended in the subclasses
  }
}
class SubCmd1 extends Cmd {
  getMyMap() {
    return new Map()
      .set("name11", "arg11, arg12")
      .set("name12", "arg21, arg22")
  }
  
  Usage() {
    if (this.name) return null
    else return "cmd sub1 bla bla bla"
  }
}
class SubCmd2 extends Cmd {
  Usage() {
    if (this.name) return null
    else return "cmd sub2 bla bla bla"
  }
}
const cli = new SubCmd1("name11", "argsObj") 
const usage = cli.Usage() 
if (usage) { console.log(`Usage:\n\n${usage}`) }
else { console.log(`Valid name ${cli.name}`) }
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers