Dentro de un scope, el keyword this cambia según la función en la que estas. Dado que estas usado ajaxCesta y esta es una función anónima, el scope de las variables y el keyword this cambia completamente. Puedes comprobarlo de forma muy simple:
Verás que this en cargarCesta(), te devolverá el objeto Cesta, en cambio el this en ajaxCesta(), te devolvera en este caso, el resultado de la consulta ajax que realiza jQuery. Por tanto, ten en cuenta el scope en el que trabajas. Para solucionarlo, puedes usar una variable propia con el scope dentro de cargarCesta y que está referencie al this del objeto Cesta.
Dicho esto,
Creo que así lo tendrías solucionado.
PD:
Aquí tienes una explicación relativamente sencilla de los scopes y como cambia this.
https://javascriptplayground.com/javascript-variable-scope-this/
Aquí tienes toda la docu sobre this.
https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Operators/this
Saludos
Código (javascript) [Seleccionar]
cargarCesta()
{
var a = 'hola';
ajaxCesta(function(data){
var a = 'adios';
console.log(this);
console.log(a);
});
console.log(this);
console.log(a);
}
Verás que this en cargarCesta(), te devolverá el objeto Cesta, en cambio el this en ajaxCesta(), te devolvera en este caso, el resultado de la consulta ajax que realiza jQuery. Por tanto, ten en cuenta el scope en el que trabajas. Para solucionarlo, puedes usar una variable propia con el scope dentro de cargarCesta y que está referencie al this del objeto Cesta.
Dicho esto,
Código (javascript,12,22,23) [Seleccionar]
var aux = null;
class Cesta
{
constructor()
{
this._arrayCesta = null;
this._prueba = 69;
}
cargarCesta()
{
let _this = this;
ajaxCesta(function(data){
if(data.error)
{
alert(data.infoError);
}
else
{
alert(data.error);
_this._arrayCesta = "lal";
alert(_this._prueba);
}
});
//this._arrayCesta = aux;
}
}
Creo que así lo tendrías solucionado.
PD:
Aquí tienes una explicación relativamente sencilla de los scopes y como cambia this.
https://javascriptplayground.com/javascript-variable-scope-this/
Aquí tienes toda la docu sobre this.
https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Operators/this
Saludos