gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 23:01:18 26 4
gpt4 key购买 nike

看来用这段代码:

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之后,生成的Datamap是Conf 1Conf 2的混合。这是怎么发生的?

这是一个现场演示:https://jsfiddle.net/mztyLh66/7/

最佳答案

该问题是由于 Datamap 实现 defaults 造成的.

在代码行中:

if (obj[prop] == null) obj[prop] = source[prop];

obj[prop]是指向 source[prop] 的指针,这会导致 new Datamap() 的不同实例之间共享内存状态。 .

我已经使用深层复制解决了该问题:

// 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]));
}
}

并打开了pull request修复它。

关于javascript - new Datamap() 在调用之间保持共享的内存状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37075390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com