我总是通过以下方式创建 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 中的防御性编程的更好实践有任何建议,那么我们也非常感谢您的反馈。