无法使用$.post()发布javascript对象

无法使用$.post()发布javascript对象,javascript,jquery,Javascript,Jquery,我正在尝试创建一个javascript对象,以便稍后将其发布到后端,但我遇到了一些问题 这是我正在尝试的代码。当我将console.log设置为该对象时,一切正常,但当我使用$.post发布它时,我遇到了一些错误。我认为这是一个错误,因为在对象中我有一个方法,这可能会导致问题,但我需要该方法来动态生成对象 var appointmentsPart = { "id":"appointments", "integrationId":"1258514282" } var app

我正在尝试创建一个javascript对象,以便稍后将其发布到后端,但我遇到了一些问题

这是我正在尝试的代码。当我将console.log设置为该对象时,一切正常,但当我使用$.post发布它时,我遇到了一些错误。我认为这是一个错误,因为在对象中我有一个方法,这可能会导致问题,但我需要该方法来动态生成对象

var appointmentsPart = {  
    "id":"appointments",
    "integrationId":"1258514282"
}


var appointments = new objectPart('appointments', '1258514282');

appointments.addPart(appointmentsPart);

console.log(appointments); //this shows the correct object

function objectPart(id, integrationId){
    this.id  = id;
    this.integrationId = integrationId;
    this.part = new Array();
    this.addPart = function(obj){
        this.part.push(obj);
    }
}
当我制作console.log时,所有的东西都像我想要的那样显示,但问题是当我想使用$.post将这个对象发布到php文件时

$.post('/api.php', {api: appointments}, function(){
    console.log('test')
});
我无法读取未定义的属性“push”


我创建了一个帮助您理解我的问题。

在您的this.part.push中,它显示的不是objectPart函数,而是addPart函数。错过使用这个;将此保存到变量,以便在其他函数中使用。

您在此处遇到范围问题

this.part = new Array();
this.addPart = function(obj){
    this.part.push(obj);
}
使用functionobj创建自己的作用域,并使用自己的this变量。因此,this.part与this.part=新数组中的设置不同

要解决这个问题,我们需要一个函数

this.part = new Array();
this.addPart = (obj) => {
    this.part.push(obj);
}
箭头函数表达式的语法比函数表达式短,并且不绑定自己的this、arguments、super或new.target


这里有一个分叉版本的you,向您展示它的工作原理。

错误的原因是它没有任何引用。将代码更改为此以使阵列推送工作

function objectPart(id, integrationId){
    this.id  = id;
    this.integrationId = integrationId;
    this.part = new Array();
    var arr = this.part;
    this.addPart = function(obj){
        arr.push(obj);
    }
}

JSFIDLE是empty@AlivetoDie我更新了它现在检查它正确和详细的解释。+1。向上看,你解决了我的问题。