'Inspect Ember.js: Get the type of an object (Class)?

I use console.log() a lot, especially in combination with Ember.inspect(). But there's one thing I miss:

How can I find out the type of an object (Class)?

For example: Getting something like <Sandbox.ApplicationController:ember288> when inspecting Ember.get("controller")?



Solution 1:[1]

I understand you are looking for a string for debugging purposes, but I originally came to this question wanting to know specifically how to get the type of the object, not a string describing the object.

Using the built in Javascript property constructor will yield the class used to construct the instance. For example you could do:

person = App.Person.create();
person.constructor // returns App.Person
person.constructor.toString() // return "App.Person"

Solution 2:[2]

If you get Class, you can usually call toString() (or as a shortcut concat an empty string + '') to get something like <Sandbox.ApplicationController:ember288>

Solution 3:[3]

Another useful feature (in chrome) is the dir command.

dir(App.User)

This will give you the full object information, rather than just the name.

Solution 4:[4]

Be aware that some of these answers suggested here only work in development. Once your code is in production most of those methods / class names will get minified.

import Model from '@ember-data/model';

export default class Animal extends Model {
  // ...
}

So in development:

const model = this.store.createRecord('animal');
model.constructor.name // returns Animal

in production:

const model = this.store.createRecord('animal');
model.constructor.name // returns 'i' (or any other single letter).

To avoid this, use constructor.toString()

const model = this.store.createRecord('animal');
model.constructor.toString() // returns 'model:animal'

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 David Monagle
Solution 2 Luke Melia
Solution 3 Gevious
Solution 4 esbanarango