Inspect Ember.js: получить тип объекта (класс)?

Я использую console.log() много, особенно в сочетании с Ember.inspect(). Но есть одна вещь, которую я пропускаю:

Как узнать тип объекта (класс)?

Например: Получение значения <Sandbox.ApplicationController:ember288> при проверке Ember.get("controller")?

Ответ 1

Это для Ember Data 1.0.0-beta.17 + (они изменили его)

Если вам просто нужно имя модели (например, App.Comemnt или app/models/comment.js имеет название модели comment), вы можете использовать thing.constructor.modelName.

Например:

var aComment = this.get('store').createRecord('comment');
aComment.get('constructor.modelName') // => 'comment'

Это для Ember Data 1.0.0.b.3.

Если вам нужен только ключ типа (например, App.Comment key type comment), вы можете использовать thing.constructor.typeKey.

Например:

var aComment = this.get('store').createRecord('comment');
aComment.get('constructor.typeKey') // => 'comment'

Ответ 2

Я понимаю, что вы ищете строку для целей отладки, но я изначально пришел к этому вопросу, желая узнать конкретно, как получить тип объекта, а не строку, описывающую объект.

Использование встроенного конструктора свойств Javascript даст класс, используемый для построения экземпляра. Например, вы можете сделать:

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

Ответ 3

Если вы получаете Class, вы обычно можете вызвать toString() (или как ярлык concat пустую строку + ''), чтобы получить что-то вроде <Sandbox.ApplicationController:ember288>

Ответ 4

Еще одна полезная функция (в хром) - это команда dir.

dir(App.User)

Это даст вам полную информацию об объекте, а не просто имя.