printDataを呼び出すと、以下のクラスがあります。this.collectionは未定義です。javascriptのプロトタイプからオブジェクトのプロパティにアクセスするには?
printData()内のプロトタイプからthis.collectionにアクセスするにはどうすればよいですか?または、私はクラスの構造を変更する必要がありますか?実際には、オブジェクトは、internが階層構造でオブジェクトを返す関数を返します。
ありがとうございます!
サンプルクラス:
var DbProvider = (function() {
function DbProvider(db) {
var that = this; // create a reference to "this" object
that.collection = db;
}
DbProvider.prototype.create = function() {
return {
action: function() {
var y = {
printData: function() {
alert('Hello ' + this.collection.Name);
}
};
return y;
}
};
};
return DbProvider;
})();
使用法:ES5構文とコール構造を維持
var a = new DbProvider({ "Name": "John" });
a.create().action().printData();
で
that
を使用することができますか? – MayorMontyあなたのコードでは、 'that'というラベルの' this'への参照を作成します。代わりに 'that'を使用することができますか(意図していません) – MayorMonty
そのオブジェクトにアクセスできません。また、ES5でプレーンなjavascriptで作成することも可能ですか? –