Javascript地图返回功能

时间:2014-01-07 16:00:11

标签: javascript

我对Firefox中的地图有一个有趣的问题。当我测试一个空地图是否有字符串“watch”时,它将返回true并返回函数watch()。我希望它返回false,因为我没有将“watch”键添加到地图中。一个简单的例子

我通常会创建一个像

这样的基本地图
var myMap = {}
myMap["apple"] = 1;
myMap["pear"] = 2;

并测试地图是否有我要写的对象

if ("apple" in myMap) { ... }

问题在于,如果地图并未准备好包含它,我想将字符串“watch”添加到地图中。因此,当我检查地图是否包含“监视”时,它返回true。

if ("watch" in myMap) { ... }
// This also returns true.  and returns the function watch()

有关如何避免此行为的任何想法?

由于

2 个答案:

答案 0 :(得分:2)

你可以尝试

var myMap = {};
myMap["apple"] = 1;
myMap["pear"]=2;

if (myMap.hasOwnProperty("apple")) {

}

if (myMap.hasOwnProperty("watch")) {

}

答案 1 :(得分:2)

这是因为对象文字继承自Object原型。您可以创建一个从无任何内容继承的空对象:

var myMap = Object.create(null);

或查看hasOwnProperty

if (myMap.hasOwnProperty('watch')) {
  ...
}