JavaScript method overload

  https://stackoverflow.com/questions/2187666/help-with-js-and-functions-parameters

JavaScript doesn't support what you would call in other languages method overloading, but there are multiple workarounds, like using the arguments object, to check with how many arguments a function has been invoked:

function f1(a, b, c) { if (arguments.length == 2) { // f1 called with two arguments } else if (arguments.length == 3) { // f1 called with three arguments } }

Additionally you could type-check your arguments, for Number and String primitives is safe to use the typeof operator:

function f1(a, b, c) { if (typeof a == 'number' && typeof b == 'number') { // a and b are numbers } else if (typeof a == 'string' && typeof b == 'number' && typeof c == 'number') { // a is a string, b and c are numbers } }

And there are much more sophisticated techniques like the one in the following article, that takes advantage of some JavaScript language features like closures, function application, etc, to mimic method overloading:

 

 

Guess you like

Origin www.cnblogs.com/chucklu/p/11095640.html