Я объявил класс 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});
В этом пункте я получаю ошибку, потому что params в 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()
.
Я предполагаю, что есть лучшее решение. Возможно, я не применяю методы наиболее успешной практики при объявлении класса.