我想做一个不会为 GC 制造任何垃圾的 extendDeep() 函数。
垃圾收集器需要尽可能地处于非活动状态。参考:https ://www.scirra.com/blog/76/how-to-write-low-garbage-real-time-javascript
这是我要修改的 extendDeep() 函数:
function extendDeep(parent, child) {
var i, toStr = Object.prototype.toString,
astr = "[object Array]";
child = child || {};
for (i in parent) {
if (parent.hasOwnProperty(i)) {
if (typeof parent[i] === 'object') {
child[i] = (toStr.call(parent[i]) === astr) ? [] : {};
extendDeep(parent[i], child[i]);
} else {
child[i] = parent[i];
}
}
}
return child;
}
该函数不必返回任何内容。因为重新调整的对象是产生垃圾的原因。
假设父对象的所有属性都可以通过引用获得(对象的重用)