【发布时间】:2012-03-22 17:48:14
【问题描述】:
我正在尝试使用 javascript 更面向对象的方法,并通过使用 class.prototype 实现了一个具有一些方法的类。
但是我有一个问题。
我尝试使用 myclass 中的方法作为 ajax 调用的成功函数。问题是当被 ajax 回调时,我不能使用 this 与该方法。即:
MyClass.prototype.myMethod = function(data)
{
this.data = data; /* in here this is the window object */
}
var myClass = new MyClass();
$.ajax:
success:myClass.myMethod;
我做错了吗?
编辑:完整功能尝试
我不是
方法
function MyClass()
{
this.name="myclass";
};
MyClass.prototype.print = function()
{
alert(this.name);
};
var myAjax = function(context_,func)
{
$.ajax({
url:"www.google.com",
type: "GET",
context:context_,
complete:function(data){
func(data);
}
});
};
var refreshGroups = function(groups)
{
var myClass = new MyClass();
myAjax(myClass,myClass.print);
return;
}
结果:警报为空
【问题讨论】:
-
你的意思是:
$.ajax({ success:myClass.myMethod; });? -
Javascript 不是面向对象的,所以抽象很快就中断了。
myMethod函数不知道它只对你的类起作用,它只是一个方法。您需要将调用包装在一个匿名函数中,该函数调用您的对象上的方法。将myClass.myMethod替换为function(){myClass.myMethod();} -
@david JavaScript 是 OO,它只是缺少绑定方法,因为它以一种奇怪的方式绑定
this。
标签: javascript oop asynchronous