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)
Это даст вам полную информацию об объекте, а не просто имя.