我總是創建以下列方式JavaScript對象的自定義處理時未定義字段:創建JavaScript對象
//object code
function someObject() {
this.field1;
this.fiend2;
}
function makeSomeObject(data) {
var result = new someObject();
result.field1 = data.field1DataName;
result.fiend2 = data.field2DataName;
return result;
}
//object instantiation
var someObject = makeSomeObject(data);
processObject(someObject);
我現在想要更多防守做到這一點。換句話說,我想在設置它之前測試data.field1DataName。我試圖以下面的方式做到這一點。
//object code
function someObject() {
this.field1;
this.fiend2;
}
function makeSomeObject(data){
var result = new someObject();
result.field1 = typeof data != "undefined" ? "field1DataNameUndefined": data.field1DataName;
result.field2 = typeof data != "undefined" ? "field2DataNameUndefined": data.field2DataName;
return result;
}
//object instantiation
var someObject = makeSomeObject(data);
processObject(someObject);
現在,如果數據字段丟失,將在設置對象字段之前捕獲。問題是someObject
仍然被創建,並且processObject
將接受它,但知道有問題。我的問題是指示someObject
有問題的最佳做法是什麼,所以我可以避免processObject
中的問題。如果任何人有任何建議,在考慮這個問題的過程中,更好的做法在javascript中的防禦性編程,以及讚賞反饋。