我想爲自己的物體做一些設置,女巫可以在追加物體時識別相同的物體並將它們落下。爲什麼class的屬性缺失?
function ImageSet(){
this.set = [];
}
ImageSet.prototype.length = function(){return this.set.length}
ImageSet.prototype.process = function(imgObj){
var is_exist = false;
$.each(this.set, function(i){
if (this.set[i].imgHash == imgObj.imgHash){is_exist = true};
});
if (!is_exist){
this.set[this.set.length + 1] = imgObj;
return true;
}
return undefined;
}
var imagesChoosen = new ImageSet();
所以當用戶點擊元素我創建一個新的對象,並嘗試將它附加到我的ImageSet。 在第一點擊目標順利追加設置,但在第二次點擊控制檯寫入錯誤
TypeError: this.set is undefined if (this.set[i].imgHash == imgObj.imgHash){is_exist = true};
和調用ImageSet是代碼:
$('#content_table a').click(function(event){
event.preventDefault();
el = new Image($(this).attr('href'));
if (imagesChoosen.process(el)){
$(this).parent().css("border", "3px dotted orange");
} else {
$(this).parent().css("border", "None");
}
console.log(imagesChoosen.length());
return false;
});
我無法理解。第一次調用後,我的ImageSet是否被破壞?
''.each'回調裏面的'this'與外面的'this'不一樣。在每個之前放置一個'var that = this',並在回調中訪問'that.set'。 – DCoder
這就是我看到它時的想法;改變事件的背景,但爲什麼第一次沒有錯誤?我認爲它第一次在this.set [this.set.length ** + 1 **]處添加一個元素。下一次(發生錯誤時)在this.set [1]處添加一個元素,它會檢查這個元素。設置未設置的[0]。 – HMR