是否更好地存储对象或引用其他对象中的对象?让我举个例子来解释一下.
我有一个对象"团队"和一个对象"单元"该单元属于团队.我想在对象"团队"中"存储"对象"单元".
1)我可以这样做:单位存储在团队对象中
// class Team
function Team() {
this.units = [];
}
// class Unit
function Unit(team) {
team.units.push(this);
}
myTeam = new Team();
units = [];
units[units.length] = new Unit( myTeam );
Run Code Online (Sandbox Code Playgroud)
2)或类似的东西:单位id存储在团队对象中
// class Team
function Team() {
this.units = [];
}
// class Unit
function Unit(team, id) {
team.units.push(id);
}
myTeam = new Team();
units = [];
units[units.length] = new Unit( myTeam, units.length );
Run Code Online (Sandbox Code Playgroud)
这是可以理解的吗?
绝对是第一个更面向对象的方法.我没有看到有id和外部阵列的任何优点.但缺点是显而易见的:
外部units阵列可以在没有你注意的情况下修改,使得ids不同步而且几乎没用.试试调试吧!
由于没有封装,每个都Team可以修改任何封装Unit
似乎是一个数组存储引用的所有单位,而只有一个Team 拥有的Unit.
删除一个Team会怎么样?
如果你不Unit直接删除所有s,你会得到内存泄漏
您可能希望从公用units表中删除其所有单位.但这将在units表格中留下空白.
如果你也删除单位并压缩units数组,你将不得不修改所有其他Teams,因为数组中的索引将会改变
id Unit没有商业价值
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |