function Example(){
var id;
};
Example.prototype.getId = function(){
// return this.id;
};
Example.prototype.init = function(){
$.post( 'generateId.php', {}, function(data){
// this.id = data;
});
};
如何在这些功能中访问id?
答案 0 :(得分:2)
您似乎认为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;
});
};
答案 1 :(得分:0)
也许你可以改写一下:
var Example = Example || {};
Example.id = "";
Example.init = function(){
$.post( 'generateId.php', {}, function(data)
{
Example.id = data; // <-------- error
});
}