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 中存在“私有(private)”变量。私有(private)变量仅在 Javascript 中通过闭包进行模拟,但并不像其他语言那样存在。在您的代码中,id
只能从构造函数内访问。
您可以将 id
保持为私有(private),并且仍然能够从函数中访问它,但是您必须在构造函数中将这些函数声明为闭包才能访问它:
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
不是私有(private)的):
Example.prototype.init = function()
{
var self = this;
$.post( 'generateId.php', {}, function(data)
{
self.id = data;
});
};
关于javascript - 无法访问类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548816/