2011-06-24 17 views
1

特定の関数を実行してもこれらの奇妙なエラーが発生し続けます。ここにセットアップがあります。が定義されていません。 'map'メソッドがありません

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定義されていないが何の方法「マップ」もちろん

はMyObjectには持っていませんencodeメソッドとはまったく関係ありません。私はdata.mapにブレークポイントを設定し、データは配列です。 MyObjectや_activateとは何の関係もないので、これがエラーや何が起こっているのかを報告するChromeのバグかどうか疑問に思います。

EDIT:詳細。

私がinstance.load(エンコードされた)行をコメントアウトするとエラーは発生しません。それは私がencode()が同期的に起こっていないと思うようになります...

+2

問題を示すhttp://jsfiddle.netを提供できますか? –

+2

エラーは 'somedata'が" Object ReferenceError:_activate is not defined "という文字列であるかのように読み取ります。 – Nick

答えて

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(執筆時点で)と期待しています。

これらの制限の副作用が原因である可能性があります。

+0

データが正しい配列で、私はデバッガでそれを見てきました。これは大きなイメージで、多くのバイトの配列です。それを混乱させることはありません。 – Matthew

+0

もし私がそれを意味しなければ、私はそれを意味しませんでした。本当に私はブラウザの非互換性の問題かもしれないと指摘しようとしていました。 –

+0

あなたの最初の文は非常に間違っています、配列とオブジェクトはJavaScriptの異なるデータ型です。あなたが指しているのは、類似した配列またはオブジェクト内のデータにアクセスするために使用できるシンタックスです。決してそれはオブジェクトと配列を交換可能にしません。 – HoLyVieR

関連する問題