无法理解为什么在ajaxComplete获得新值后ErrorHandler.prototype.errorsBasket
var ErrorHandler = function() {
var _this = this;
$(document).ajaxComplete(function() {
_this.errorsBasket.push([1]);
});
};
ErrorHandler.prototype.errorsBasket = [];
ErrorHandler.prototype.errorsBasket1 = [];
var a = new ErrorHandler();
a.errorsBasket1 = [2];
$.get('/');
$(document).ajaxComplete(function() {
why ->> console.log(ErrorHandler.prototype.errorsBasket); // [Array[1]]
console.log(ErrorHandler.prototype.errorsBasket1); // []
});
答案 0 :(得分:0)
这样做:
$(document).ajaxComplete(function() {
_this.errorsBasket.push([1]);
});
您正在更改ErrorHandler
对象的值,它会为每new ErrorHandler
更改一次。
这样做时:
var a = new ErrorHandler();
a.errorsBasket1 = [2];
您正在为a
分配一个新值,这意味着如果您删除此行:
ErrorHandler.prototype.errorsBasket1 = [];
并且
a.errorsBasket1 = [2];
它会起作用但是
a.errorsBasket1; //without a.errorsBasket1 = [2];
将是未定义的。
但是这个:
console.log(a.errorsBasket1); //without a.errorsBasket1 = [2];
ErrorHandler.prototype.errorsBasket1 = [0];
console.log(a.errorsBasket1);
将给出
undefined
[0]
虽然:
console.log(a.errorsBasket1); //with a.errorsBasket1 = [2];
ErrorHandler.prototype.errorsBasket1 = [0];
console.log(a.errorsBasket1);
将给出
[2]
[2]
总之,ErrorHandler.prototype.errorsBasket1 = [];
只是一种为对象分配默认值的方法。