Javascript map 返回函数

标签 javascript

我有一个有趣的问题, 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/

相关文章:

javascript - 当我更改选择框的值时,使用日期选择器显示文本字段

javascript - THREE.STLLoader 不是构造函数

javascript - Vue.js : Communicate with components that are down the DOM

javascript - 缩小 HTML Canvas 时出现轻微模糊

javascript - 连接表行

javascript - If语句性能

javascript - 无法在代码中包含 Google map 标记?

javascript - 将网页元素绑定(bind)到 Android 应用程序

javascript - tinyMCE 删除/禁用调整大小切换

javascript - 使用按钮单击将 mongodb 数据导出到 Excel