Теперь это новый для меня. Я искал вокруг, но не могу найти решение в другом месте.'this' возвращает либо 'Object', либо 'Window' внутри того же объекта
У меня есть этот код (CoffeeScript):
PositionDetector = ->
detectPosition : ->
console.log this # outputs 'Object' (OK)
navigator.geolocation.getCurrentPosition(this.locationHandler)
locationHandler : (position) ->
console.log this # outputs 'Window' (WHY??)
positionDetector = new PositionDetector()
positionDetector.detectPosition()
(или соответствующий скомпилированный JavaScript, если вы предпочитаете):
var PositionDetector = function() {
detectPosition : function() {
console.log(this); // outputs 'Object'
navigator.geolocation.getCurrentPosition(this.locationHandler);
},
locationHandler : function(position) {
console.log(this); // outputs 'Window'
}
}
var positionDetector = new PositionDetector();
positionDetector.detectPosition();
Вопрос, почему же первый 'это' вывод «Объект», а второй - «Окно»?
@vinayakj: Если вы имеете в виду код справа вверху, потому что это не JavaScript, это CoffeeScript. Джереми опубликовал перевод JavaScript во втором блоке. –