OO Javascript - 我应该让一个类将自己添加到DOM中还是让它返回一个元素然后添加到DOM中?

Mag*_*aas 7 javascript jquery dom

我正在练习使用OO Javascript,制作一种用于查看漫画(漫画)的网络应用程序

现在我有几个班:

  • 搜索结果
  • 漫画(根据搜索结果中的数据生成)
  • 章(载于漫画内)
  • 页面(包含在章节中)
  • 图像(包含在页面中)

我通过生成元素的html将搜索结果添加到DOM,然后使用jQuery附加它.

这是我的问题所在:

我应该生成html(或jQuery DOM元素)并从类中的函数返回它,然后在类外部添加此元素,或者更明智的是为类提供对容器的引用,它应该将元素放入并让它通过追加将元素放入容器中?

所以这?:

function(data, result, response) {
  var
    $resultContainer = $('<div/>', {class: 'row-fluid'}),
    maxResults = 10;

  for(var i in data) {
    if(i == maxResults) {
      break;
    }
    data[i].manga = Manga(data[i]);
    var res = new SearchResult(data[i]);
    res.setMyContainerElement($resultContainer);
    res.addResultToDOM();
  }
}
Run Code Online (Sandbox Code Playgroud)

或这个?:

function(data, result, response) {
  var
    $resultContainer = $('<div/>', {class: 'row-fluid'}),
    maxResults = 10;

  for(var i in data) {
    if(i == maxResults) {
      break;
    }
    data[i].manga = Manga(data[i]);
    var res = new SearchResult(data[i]);
    $resultContainer.append(res.getHTML());
  }
}
Run Code Online (Sandbox Code Playgroud)

在这些示例中,变量"data"是来自AJAX调用的数据,该调用返回包含结果的JSON字符串,目前对返回的结果数量没有限制,所以我将其设置为硬编码,我将在我添加时添加在服务器端进行更详细的介绍,但是现在这种情况可以正常,因为我在前端工作.

如果需要任何其他信息,请告知我们,我很乐意更新我可能遗漏或需要的任何信息(如果有的话).

Gon*_*ing 3

将评论移至答案,因为该问题主要基于意见,很可能会被关闭:)

理论上,如果您从工作函数返回结构并让调用它的管理器函数决定如何处理它,则代码的可重用性更高。即“工人工作,经理管理”。将容器沿着代码树传递会添加依赖项:)

这并不容易,但最好的方法是认为每个函数都是为其他人编写的,并且您希望尽可能提供帮助。

如果更改数据结构,当然需要重构,但这比将决策/依赖关系降低到较低级别更好。如果您想被迫检查依赖于数据形状的高级代码。

关于参数的依赖关系:

当函数的参数导致函数做出决策时(称为命令耦合),它们只会变得更糟糕。查找和处理的值是参数的更好用途:)