37

console.log()特にと組み合わせてよく使いEmber.inspect()ます。しかし、私が見逃していることが1つあります。

オブジェクトのタイプ(クラス)を確認するにはどうすればよいですか?

例:<Sandbox.ApplicationController:ember288>検査するときのようなものを取得しEmber.get("controller")ますか?

4

5 に答える 5

77

モデル名だけが必要な場合(たとえばapp/models/comment.js、モデル名があるcomment場合)は、を使用できますthing.constructor.modelName

例えば:

var aComment = this.get('store').createRecord('comment');
aComment.get('constructor.modelName') // => 'comment'
于 2013-11-15T17:02:12.653 に答える
24

デバッグ目的で文字列を探しているとのことですが、オブジェクトを説明する文字列ではなく、オブジェクトの型を取得する方法を具体的に知りたいという質問に最初に行き着きました。

組み込みのJavascriptプロパティコンストラクターを使用すると、インスタンスの構築に使用されるクラスが生成されます。たとえば、次のことができます。

person = App.Person.create();
person.constructor // returns App.Person
person.constructor.toString() // return "App.Person"
于 2013-04-26T05:01:10.623 に答える
18

を取得した場合、通常は(またはショートカットとして空の文字列を連結して)Class呼び出して、次のようなものを取得できます。toString()+ ''<Sandbox.ApplicationController:ember288>

于 2012-11-04T17:23:07.390 に答える
1

もう1つの便利な機能(クロム)はdirコマンドです。

dir(App.User)

これにより、名前だけでなく、完全なオブジェクト情報が得られます。

于 2013-05-22T11:15:13.467 に答える
0

ここで提案されているこれらの回答の一部は、開発でのみ機能することに注意してください。コードが本番環境に入ると、これらのメソッド/クラス名のほとんどが縮小されます。

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

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

だから開発中

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

生産中:

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

これを回避するには、constructor.toString()

const model = this.store.createRecord('animal');
model.constructor.toString() // returns 'model:animal'
于 2022-01-27T20:46:28.247 に答える