не определено не имеет метода 'map' - PullRequest
1 голос
/ 24 июня 2011

Я продолжаю получать эти причудливые ошибки при запуске одной конкретной функции, и я не могу понять это. Вот установка.

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 и это:

Uncaught TypeError: Object ReferenceError: _activate не определен, не имеет метода 'map'

Конечно, MyObject не имеет абсолютно никакого отношения к методу кодирования. Я поставил точку останова на data.map, а data - это массив. Это не имеет никакого отношения к MyObject или _activate, поэтому мне интересно, является ли это ошибкой Chrome в сообщении об ошибке или что происходит.

РЕДАКТИРОВАТЬ: Больше информации. У меня также было это в моем коде:

var instance = new MyObject();

var encoded = encode(somedata);

instance.load(encoded);

Если я закомментирую строку instance.load (в кодировке), я не получу сообщение об ошибке. Это заставляет меня думать, что encode () не происходит синхронно ...

1 Ответ

0 голосов
/ 24 июня 2011

В JavaScript массивы и объекты часто взаимозаменяемы, например, следующее должно давать одно и то же:

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

Учитывая, что вызывается функция map, я ожидаю, что data будетмассив в любом случае концептуально.

Карта была реализована в JavaScript 1.6 и стандартизирована ECMA 5 , поэтому я ожидаю, что поддержка браузером будет ограничена (на момент написания).

Это может быть вызвано побочным эффектом этих ограничений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...