我正在逐步创建嵌套对象。原始代码有效,但uglified代码没有。
使用原始代码
function(type, id, fieldName) {
if (!this.model.proposed_changes)
this.model.proposed_changes = {};
if (!this.model.proposed_changes[type])
this.model.proposed_changes[type] = {};
if (!this.model.proposed_changes[type][id])
this.model.proposed_changes[type][id] = {};
if (fieldName) {
this.model.proposed_changes[type][id][fieldName] = this.model.proposed_changes[type][id][fieldName] || {};
}
}
Uglified Code (为了便于阅读而添加新行)
function(e, i, n) {
this.model.proposed_changes || (this.model.proposed_changes = {}),
this.model.proposed_changes[e] || (this.model.proposed_changes[e] = {}),
this.model.proposed_changes[e][i] || (this.model.proposed_changes[e][i] = {}),
n && (this.model.proposed_changes[e][i][n] = this.model.proposed_changes[e][i][n] || {})
}
当this.model.proposed_changes
undefined
Cannot read property <ID passed in> of undefined
mangle: false
时,此uglified函数出错。我不确定为什么uglified代码不起作用,但似乎分配不按顺序运行,即使它们应该是(https://msdn.microsoft.com/en-us/library/9b37css7(v=vs.94).aspx)
我正在使用gulp-uglify和其他配置,除了保持许可证,虽然我已经尝试使用ui->yourUiItem
但没有效果。
有没有办法强制uglify确保按顺序发生分配,假设这是问题?
背景
在我的例子中,我保证this.model存在,但不是它有一个名为proposed_changes的子对象。这个模式一直持续到我有this.model.proposed_changes [type] [id] [fieldName]。如果有更好的方法,我当然会感兴趣。
答案 0 :(得分:0)
生产后端错误地将this.model.proposed_changes初始化为'{}'
而不是{}
。修复该错误后,代码按预期工作。