我正在构建一个 AJAX 应用程序,它大量使用显示数据的表。为了保持设计简单,能够将表行 (DOM) 与数据对象 (JavaScript) 联系起来非常好,反之亦然。因此,例如,如果单击一行,我知道该行与哪个数据对象一起使用,或者如果删除了一个数据对象,我很容易知道要从表中删除哪一行。几年前,当我尝试这个时,我最终遇到了很多内存泄漏。我知道 IE8+ 已经解决了其中的大部分问题。Chrome、FireFox 和 Safari 的现代版本怎么样?
这是代码的一个示例,这些天这“安全”吗?
// Email class, holds info about each email displayed in a table
function Email()
{
this.To = "";
this.From = "";
this.Row = null;
}
// This array would actually come from an AJAX web service call
var Emails = new Array();
Emails[0] = new Email();
Emails[0].To = "whatever";
Emails[0].From = "hello";
Emails[1] = new Email();
Emails[1].To = "whatever";
Emails[1].From = "hello";
// Code like this would be used to build initial table, after this rows would
// be added deleted as updates arrive via AJAX calls
var table = document.createElement("table");
for(var x=0;x<Emails.length();x++)
{
var row = table.insertRow(-1);
row.Email = Emails[x]; // Is this safe?
Emails[x].Row = row; // ...and also this?
var cell = row.insertCell(-1);
cell.innerHTML = Emails[x].To;
cell = row.insertCell(-1);
cell.innerHTML = Emails[x].From;
}