未定义没有方法'map'

时间:2011-06-24 13:02:44

标签: javascript google-chrome

在运行某个特定功能时,我不断收到这些奇怪的错误,我无法弄明白。这是设置。

MyObject.prototype._activate = function() {
...
}

...

encode = function(data) {
    var str;
    str = data.map(function(d) {
        return String.fromCharCode(d)
    }).join("");
    return btoa(str).replace(/.{76}(?=.)/g, '$&\n');
}

var mystring = encode(somedata);

错误发生在data.map行上,它是:

未捕获TypeError:对象ReferenceError:未定义_activate没有方法'map'

当然,MyObject与编码方法完全无关。我在data.map上设置了断点,数据是一个数组。它与MyObject或_activate无关,所以我想知道在报告错误或发生的事情时这是否是Chrome错误。

编辑:更多信息。我的代码中也有这个:

var instance = new MyObject();

var encoded = encode(somedata);

instance.load(encoded);

如果我注释掉行instance.load(编码),我没有收到错误。它让我觉得encode()没有同步发生......

1 个答案:

答案 0 :(得分:0)

在JavaScript中,数组和对象通常是可互换的,例如以下内容应该相同:

alert(a.mem);
alert(a["mem"]);

鉴于正在调用map函数,无论如何,我希望data在概念上是一个数组。

Map was impletemented in JavaScript 1.6 and standardised ECMA 5所以我希望browser support for it to be limited(在撰写本文时)。

可能是这些限制的副作用导致了这一点。