私には奇妙な状況があります。つい最近、以前の質問により、一部のコードを手続き型からオブジェクト ベースに変更しようとしました。
関数内で関数を呼び出すコード内のいくつかの場所があります (すみません、私はまだ Javascript の用語を学んでいます)。
親「this」との接続を維持しようとして、次のように関数呼び出しに「thisObj = this」を追加して、変数を関数に渡そうとしました
geoLoc: function () {
"use strict";
var thisObj;
if (navigator.geolocation !== undefined) {
navigator.geolocation.getCurrentPosition(function (position) {
thisObj.calcRoute('driving', position.coords.latitude + ', ' + position.coords.longitude, true);
}, thisObj = this);
}
},
それで、これはFFで機能したので、大丈夫だと思いました。jslint で確認したところ、すべてが緑色 (または黄色/青色) になり、エラーは表示されませんでした。
ただし、Chrome は「ミスマッチ dom 例外 17」があると判断し、ジオロケーションを使用しないことにしました。
偶然にも、その定義を次のように移動してみました
geoLoc: function () {
"use strict";
var thisObj;
if (navigator.geolocation !== undefined) {
navigator.geolocation.getCurrentPosition(function (position) {
thisObj.calcRoute('driving', position.coords.latitude + ', ' + position.coords.longitude, true);
}), thisObj = this;
}
},
驚いたことに、FF と Chrome の両方で動作しました。残念ながら、それはjslintに失敗し、IEはかかとを蹴って死にました。
さて、私の質問は、そもそもFFで実行してjslintを渡すために実際に何をしたのか、そしてその2番目の関数内で実際にオブジェクトに名前を付けることに頼らずに状況を修正するにはどうすればよいかということです。それへの参照。
jquery は使用しないでください。ストレートなジャバスクリプト。それを修正するコードよりも重要なのは、私が実際に何をしたかについての説明です...できれば素人の言葉でお願いします。それで、さらに調査できます。