Calling Super with var args
by Patrick Steranka
JavaScript
class Parser {
constructor(){
console.log('Parser passed ' + arguments.length + ' args. ', arguments);
}
}
class MyParser extends Parser {
constructor(){
console.log('MyParser passed ' + arguments.length + ' args. ', arguments);
super(arguments);
if (arguments.length === 1 && typeof arguments[0] === 'string'){
this.constructor_1arg(arguments[0]);
} else if (arguments.length === 2 && typeof arguments[0] === 'string'){
this.constructor_2args(arguments[0], arguments[1]);
}
}
constructor_1arg(arg1){
// Nothing to do
}
constructor_2args(arg1, arg2){
// Nothing to do
}
}
class MyParserTry2 extends Parser {
constructor(){
console.log('MyParser2 passed ' + arguments.length + ' args. ', arguments);
if (arguments.length === 1 && typeof arguments[0] === 'string'){
super(arguments[0]);
this.constructor_1arg(arguments[0]);
} else if (arguments.length === 2 && typeof arguments[0] === 'string'){
super(arguments[0], arguments[1]);
this.constructor_2args(arguments[0], arguments[1]);
}
}
constructor_1arg(arg1){
// Nothing to do
}
constructor_2args(arg1, arg2){
// Nothing to do
}
}
class MyParserTry3 extends Parser {
constructor(){
console.log('MyParser3 passed ' + arguments.length + ' args. ', arguments);
super(...arguments);
if (arguments.length === 1 && typeof arguments[0] === 'string'){
this.constructor_1arg(arguments[0]);
} else if (arguments.length === 2 && typeof arguments[0] === 'string'){
this.constructor_2args(arguments[0], arguments[1]);
}
}
constructor_1arg(arg1){
// Nothing to do
}
constructor_2args(arg1, arg2){
// Nothing to do
}
}
console.log('-------------------------');
var parser2 = new MyParser('123',...