Имена классов

Часть 5

Иногда хочется получить имя класса или различать массив и объект. Такие ситуации встречаются довольно часто, и для таких случаев я припрятал для себя небольшую функцию:

nameof [] # 'Array'
nameof {} # 'Object'
nameof SomeClass # 'SomeClass'

Сама реализация выглядит вот так:

window.nameof = (cls) ->
  if typeof cls is 'object'
    cls = cls.constructor
  else if typeof cls isnt 'function'
    return typeof cls

  return unless cls.name?
    cls.toString().match(/function\s(\w+)\(/)[1]
  else
    cls.name