私はオブジェクトと配列の型を知っています。私はどのように使用する方法とオブジェクトと配列を作成する方法を知っているが、私はchild
の種類とはどのようにchild
の種類を作成するのか分からないのですか?「子供」の種類は何ですか?
これはクロームコンソールのスクリーンショットです。
私はオブジェクトと配列の型を知っています。私はどのように使用する方法とオブジェクトと配列を作成する方法を知っているが、私はchild
の種類とはどのようにchild
の種類を作成するのか分からないのですか?「子供」の種類は何ですか?
これはクロームコンソールのスクリーンショットです。
child
という名前のカスタムクラスのインスタンスであるように思われます。
:child
の
function child() {}
new child();
あなたは同じ出力を見ることが、マイナスのすべてのプロパティ:通常はそれが仕事だ何のため
、命名規則はChild
のようなコンストラクタ関数の名前を大文字にすることですが、技術的には必要ありません。
ありがとうございます。 – jasondayee
mu is too shortと一致する可能性が最も高いのは、Backbone.Model
のインスタンスであり、直接的または間接的(サブクラスを介して)です。
child
と表示された理由は、Backboneの内部機構によるものです。 Backbone.Model.extend
を使用すると、バックボーンは新しいクラスのコンストラクタを設定し、このコンストラクタの名前はchild
です。これはcode for the .extend
methodで容易に見ることができます。
あなたがランタイムに取得したものの有用な識別子を取得することは、不可能ではないにしても、困難です。私はクラスの名前を打つフィールドとして__classname__
を使用するという習慣を取った。これは、私が検査しているオブジェクトの__proto__
フィールドに表示されます。私はこれをデバッグ目的でのみ使用します。ここではクロームコンソールでの例です:
@muは、オブジェクトのプロパティを見てからcorrectly guessed短すぎると、それはBackbone.Model
のインスタンスでした。あなただけへのアクセスを持っていたものの、
new child.constructor(...);
ます。また、新しいコレクションでモデル(クラス)を使用することができます:あなたは正しいコンストラクタ引数を知って提供し、このように同じオブジェクト(クラス)の別のインスタンスを作成することができますモデルインスタンス:
new MyCollection = Backbone.Collection.extend({
model: child.constructor,
...
});
として@Louis notedは、あなた自身をプロトタイプオブジェクトにいくつかの名前を入れない限り、オブジェクトのインスタンスのうち、合理的な(クラス)の名前を取得することはできません。私はしばしば私のモデルにいくつかの初期化コードを必要とし、それをメソッドに入れるのではなく、という名前のコンストラクタをと明示的にと宣言してそこに初期化コードを入れます。ここMyModel
という名前の関数と同様:
var MyModel = Backbone.Model.extend({
constructor: function MyModel(attributes, options) {
Backbone.Model.prototype.constructor.call(this, attributes, options);
...
}
});
次のようなChromeデベロッパーツールでオブジェクト(クラス)の名前を見ることができます:__classname___
よう
var Car = Backbone.Model.extend({
constructor: function Car(attributes, options) {
Backbone.Model.prototype.constructor.call(this, attributes, options);
}
});
var Truck = Car.extend({
constructor: function Truck(attributes, options) {
Car.prototype.constructor.call(this, attributes, options);
}
});
文字列プロパティは変更されずに利用できるようになりますミニコードでも。名前付きコンストラクタは、非拡張コードでのみ使用できます。コードを小さくした後でも意味のあるコンストラクタ名を確認する必要がある場合は、exclude them from manglingにする必要があります。
コンソールでどのようにオブジェクトを取得しましたか?構造体とバックボーンのタグは、それがある種の 'Backbone.Model 'であることを示唆しています。 –
はい私はBackbone.Modelを使っています。 – jasondayee
そしてその出力の後ろには何らかの 'console.log(something_you_are_not_showing_us)'があります。 –