我有一个有趣的问题, map 在 Firefox 中损坏了。当我测试空 map 是否有字符串“watch”时,它将返回 true 并返回函数 watch()。我希望它返回 false,因为我还没有将键“watch”添加到 map 中。一个简单的例子
我通常创建一个基本 map ,如
var myMap = {}
myMap["apple"] = 1;
myMap["pear"] = 2;
并测试 map 是否有我要写的对象
if ("apple" in myMap) { ... }
问题是本地图还没有准备好包含字符串“watch”时,我想将它添加到 map 。因此,当我检查 map 是否包含“watch”时,它会返回 true。
if ("watch" in myMap) { ... }
// This also returns true. and returns the function watch()
关于如何避免这种行为有什么想法吗?
谢谢
最佳答案
这是因为对象字面量继承自对象原型(prototype)。您可以创建一个空对象,它从无继承:
var myMap = Object.create(null);
或者用hasOwnProperty
检查:
if (myMap.hasOwnProperty('watch')) {
...
}
关于Javascript map 返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976217/