我有一个名为Spotlight的“类”/函数.我正在尝试通过ajax检索一些信息并将其分配给Spotlight的属性.这是我的Spotlight类:
function Spotlight (mId,mName) { this.area = new Array(); /** * Get all area information */ this.getArea = function () { $.ajax({ url: base_url +'spotlight/aGetArea',type: 'POST',success: function (data) { this.area = data; } }); } }
我已经将对象分配给一个数组,并且很难从Spotlight中获取它,所以我希望使用’this’访问所有内容.虽然成功函数在类之外,但我不知道如何在类中创建它.
有没有办法使用this.area而不是Spotlight.area将数据导入类属性?
解决方法
其值取决于每个函数的调用方式.我看到了解决这个问题的3种方法:
1.为此创建别名
var that = this; this.getArea = function () { $.ajax({ url: base_url +'spotlight/aGetArea',success: function (data) { that.area = data; } }); };
2.使用jQuery .ajax context选项
this.getArea = function () { $.ajax({ url: base_url +'spotlight/aGetArea',context : this,success: function (data) { this.area = data; } }); };
3.使用绑定函数作为回调
this.getAreaSuccess = function (data) { this.area = data; }; this.getArea = function () { $.ajax({ url: base_url +'spotlight/aGetArea',success: this.getAreaSuccess.bind(this) }); };