qinu.js
function qinu (options, args) {
  const { dict, length, template, args: optArgs, random } =
    this instanceof Qinu ? options : normalizeOptions(options)
  if (!(args instanceof Array)) {
    args = Array.prototype.slice.call(arguments, 1)
  }
  if (optArgs instanceof Array) {
    args = optArgs.concat(args)
  }

  const key = !random && this instanceof Qinu
    ? this.next(dict, length) : generateKey(dict, length)
  return applyTemplate(template, key, args)
}
function qinu (options, args) {
  const { dict, length, template, args: optArgs, random } =
    this instanceof Qinu ? options : normalizeOptions(options)
  if (!(args instanceof Array)) {
    args = Array.prototype.slice.call(arguments, 1)
  }
  if (optArgs instanceof Array) {
    args = optArgs.concat(args)
  }

  const key = !random && this instanceof Qinu
    ? this.next(dict, length) : generateKey(dict, length)
  return applyTemplate(template, key, args)
}
function qinu ( options , args ) { const { dict , length , template , args : optArgs , random } = this instanceof Qinu ? options : normalizeOptions ( options ) if ( ! ( args instanceof Array ) ) { args = Array . prototype . slice . call ( arguments , 1 ) } if ( optArgs instanceof Array ) { args = optArgs . concat ( args ) } const key = ! random && this instanceof Qinu ? this . next ( dict , length ) : generateKey ( dict , length ) return applyTemplate ( template , key , args ) }
Not an arrow function, cause it requires context
Not an arrow function cause it requires context