Javascriptには「プライベート」変数が存在すると思われるようです。プライベート変数は、クロージャーを介して Javascript でのみエミュレートされますが、他の言語のようには存在しません。コードでid
は、コンストラクター内からのみアクセスできます。
ただし、プライベートを維持id
し、関数内からアクセスすることはできますが、コンストラクターでこれらの関数をクロージャーとして宣言して、アクセスできるようにする必要があります。
function Example()
{
//private
var id;
this.getId = function ()
{
return id;
}
this.init = function()
{
$.post( 'generateId.php', {}, function(data)
{
id = data;
});
};
};
this
もう 1 つの問題は、非同期コールバック内からアクセスしようとしていることです。このコンテキスト ( に渡されるコールバック$.post
) ではthis
、呼び出し関数のコンテキストが何であれ、おそらく未定義であるか、XmlHTTPRequest オブジェクトです。
それにアクセスしたい場合は、関数をキャッシュする必要があります(元のコードから、非公開ではないthis
と仮定します):id
Example.prototype.init = function()
{
var self = this;
$.post( 'generateId.php', {}, function(data)
{
self.id = data;
});
};