【发布时间】:2013-11-10 00:34:19
【问题描述】:
我总是用以下方式创建 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 中的防御性编程的更好做法有任何建议,我们也非常感谢您的反馈。
【问题讨论】:
标签: javascript oop undefined validation defensive-programming