丑陋地破坏了渐进式嵌套对象创建



我正在逐步创建嵌套对象。原始代码可以工作,但修改后的代码不能。

工作原始代码

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] || {};
  }
}

修改后的代码(为了可读性增加了换行符)

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_changesundefined时,此丑化函数出错,表示Cannot read property <ID passed in> of undefined。我不知道为什么丑陋的代码不工作,但它似乎好像赋值不按顺序运行,即使他们应该(https://msdn.microsoft.com/en-us/library/9b37css7(v=vs.94).aspx)

我将gulp-uglify与其他配置一起使用,而不是保留许可证,尽管我已经尝试了mangle: false,但没有效果。

是否有一些方法可以强制丑化以确保赋值按顺序发生,假设这是问题所在?

在我的例子中,我可以保证。模型存在,但它没有一个名为proposd_changes的子对象。这种模式一直持续到我有This .model.proposed_changes[type][id][fieldName]。如果有更好的方法,我当然会感兴趣。

生产后端初始化this.model错误。建议更改'{}'而不是{}。一旦这个bug被修复,代码就能正常工作了。

相关内容

  • 没有找到相关文章

最新更新