this
внутренняя функция findLocation
отличается от ключевого слова this
во внутренней функции:
var current_o = this; //<-- Store reference to the `this` keyword inside the func
...
this.geocoder.getLatLng(
location_name,
function( point ) { //<------------
....
Сохраняя ключевое слово this
во временной переменной, внутренняя функция может также получить доступ к свойствам this
внутренней функции findLocation
.
<ч />
Простой пример Этот код добавляет прослушиватель событий к следующему элементу ввода, сохраняя при этом ссылку на предыдущий элемент:
var a = document.getElementsByTagName("input");
a[0].onclick = function(){
var firstElement = this; //First `this`
a[1].onclick= function(){
firstElement.onclick = function(){}; //Reset
this.onclick = function(){alert("This is different!")}; //Second `this`
}
}
Ключевое слово this
внутри прослушивателей событий относится к элементу, с которым они связаны. В этом примере первый this
относится к элементу input[0]
, а второй this
относится к input[1]
. Если вы не сохраните первый this
во временной переменной (firstElement
), вы не сможете ссылаться на предыдущий this
(без прямой ссылки на первый элемент с помощью document.getElements..
).