在一个页面中我创建了一个类(MyClass)
的实例,这个类有2个方法。但我想做两件事:
- 在(1)中,设置值
this.message
- 在(2)中,调用类的信息方法或其他方法
谢谢
<script type="text/javascript">
$(document).ready(function () {
var myClass = new MyClass("MyParam");
$('#Target').click(function (event) {
myClass.save("Test");
});
});
</script>
function MyClass(myParam) {
this.myParam = myParam;
this.isError = false;
this.message = "";
}
// Define the class methods.
MyClass.prototype = {
save: function (action) {
**(2)**
},
information: function (action) {
**(1)**
}
};
更新1
当我执行下面的代码时,information
中的 data
值显示为 undifined
MyClass.prototype = {
click: function (action) {
var myData;
$.post(....., $("form").serialize(),
function (data) {
myData = data;
});
this.isError = this.information(myData);
},
information: function (data) {
alert(data);
return true;
}
};
最佳答案
在save
和information
函数中,this
应该是当前的MyClass
对象。
因此,在 save
中,this.message
应该起作用,在 information
中,this.save()
应该可以。
更新:
click: function (action) {
var myData;
$.post(....., $("form").serialize(),
function (data) {
myData = data;
});
this.isError = this.information(myData);
}
$.post
是一个 AJAX 请求并异步运行。这意味着 this.isError = this.information(myData);
在 完成之前运行,因此 myData
是 undefined
。您需要从回调内部调用 this.information
。
在回调中,this
将不再是您的 MyClass
对象,因此我们需要保存对它的引用。像这样:
click: function (action) {
var that = this;
$.post(....., $("form").serialize(),
function (data) {
that.isError = that.information(data);
});
}
关于javascript - 使用 jQuery/javascript 创建一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8855661/