我以这种方式声明了一个 Javascript 类:
function MyClass(params){
this.setValues=function(params){
this.myAttr1=params.attr1;
this.myAttr2=params.attr2;
}
this.setValues(params);
}
这样一来我就有MyClass
了公共属性myAttr1
和myAttr2
公共功能setValues
。
当我做
var myObj=new MyClass({attr1:"hi",attr2:"ho"});
对象已正确创建。当我想将此对象作为 jquery ajax 调用中的参数发送时,问题就来了:
$.ajax({
type: "POST",
url: "insert.php",
dataType: 'json',
data: {id: "1", obj:myObj});
此时我收到一个错误,因为setValues中的参数未定义。所以这个 ajax 调用正在尝试运行(我现在不知道为什么)。setValues()
我找到了一个解决方案,它创建了一个只返回内部属性的函数myClass
。
this.getValues=function(){
return {myAttr1:this.myAttr1,myAttr2:this.myAttr2};
}
接着
$.ajax({
type: "POST",
url: "insert.php",
dataType: 'json',
data: {id: "1", obj:myObj.getValues()});
但是每当我添加一个属性时,我必须记住将它返回到getValues()
.
我想有一个更好的解决方案。也许我没有遵循声明类的最佳实践。