function Example(){
var id;
};
Example.prototype.getId = function(){
// return this.id;
};
Example.prototype.init = function(){
$.post( 'generateId.php', {}, function(data){
// this.id = data;
});
};
如何在这些函数中访问 id?
function Example(){
var id;
};
Example.prototype.getId = function(){
// return this.id;
};
Example.prototype.init = function(){
$.post( 'generateId.php', {}, function(data){
// this.id = data;
});
};
如何在这些函数中访问 id?
您似乎认为 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
从异步回调中访问。在此上下文中(传递给 的回调$.post
),this
无论调用函数的上下文是什么,它可能是未定义的或 XmlHTTPRequest 对象。
如果你想访问它,你必须缓存this
你的函数(从你的原始代码,假设id
不是私有的):
Example.prototype.init = function()
{
var self = this;
$.post( 'generateId.php', {}, function(data)
{
self.id = data;
});
};
也许你可以重写一下:
var Example = Example || {};
Example.id = "";
Example.init = function(){
$.post( 'generateId.php', {}, function(data)
{
Example.id = data; // <-------- error
});
}