Javascript new Datamap()在调用之间保持内存的共享状态

Javascript new Datamap()在调用之间保持内存的共享状态,javascript,datamaps,Javascript,Datamaps,似乎有了这个代码: var map = null; map = new Datamap({ // Conf 1 ... }); // Draw map on DOM // Remove map from DOM and recreate another map map = null; map = new Datamap({ // Conf 2 ... }); 在第二次赋值map之后,生成的数据映射是Conf 1和Conf 2的混合体。 这怎么会发生 这里是一个实时演示:问题是由

似乎有了这个代码:

var map = null;
map = new Datamap({
    // Conf 1 ...
});
// Draw map on DOM
// Remove map from DOM and recreate another map
map = null;
map = new Datamap({
    // Conf 2 ...
});
在第二次赋值
map
之后,生成的数据映射是
Conf 1
Conf 2
的混合体。 这怎么会发生


这里是一个实时演示:

问题是由于的Datamap实现造成的

在代码行中:

if (obj[prop] == null) obj[prop] = source[prop];
obj[prop]
是指向
源[prop]
的指针,这会导致
新数据映射()的不同实例之间共享内存状态

我已使用深度副本解决了此问题:

// Deep copy if property not set
if (obj[prop] == null) {
    if (typeof source[prop] == 'function') {
        obj[prop] = source[prop].bind({});
    }
    else {
        obj[prop] = JSON.parse(JSON.stringify(source[prop]));
    }
}
并打开一个窗口来修复它