0

もう一方を呼び出す 2 つの関数を google.maps.Map オブジェクトに追加するのに少し苦労しています。

google.maps.Map.prototype.addMarkerFromJson = function() {
    alert("hi");
}

google.maps.Map.prototype.getPictureDataFromJson = function (jsonObj) {
    this.addMarkerFromJson();
}

このコードはエラーをスローします:

Uncaught TypeError: Object #<Object> has no method 'addMarkerFromJson'

それ自体が不可解ですが、私をさらに混乱させたのは、名前を変更したときです。

google.maps.Map.prototype.anotherTestFunction = function() {
    alert("hi");
}

google.maps.Map.prototype.aTestFunction = function (jsonObj) {
    this.anotherTestFunction();
}

これはまだ機能しません (アラートは発生しません) が、コンソールでもエラーは発生しませんか?

ここで私が間違っていることと、奇妙さの説明を正確に知りたいです!

編集:もう一度見てみると、thisin はthis.addMarkerFromJson();実際には function() 定義を参照しており、それをアタッチしている Map オブジェクトを参照していないと思い始めていますか? どの場合、他の関数を呼び出すにはどうすればよいですか?

4

1 に答える 1

0

私自身の質問に答える:

これは私が愚かだった !jquery.get() の成功コールバックとして mapObject.getPictureDataFromJson() を使用していたためthis、マップ オブジェクトではなく呼び出し元 (get 関数) を参照していました。

于 2013-08-31T16:45:54.413 に答える