Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос про стрелочные функции (https://javascript.ru/forum/misc/60172-vopros-pro-strelochnye-funkcii.html)

arrowfunctions 15.12.2015 12:16

Вопрос про стрелочные функции
 
Я как то прочитал про них, было написано, что у них this лексический. Ну, я собственно подумал, что они анологичны обычным ф-циям с bind. А сейчас попробовал в ФФ, оказывается ни хрена подобного. У них this указвает на замыкание.
;(function(){
  var a = 1
  window.foo = () => alert(this.a)
}())

window.foo() // 1

спрашивается, а зачем там this вообще нужен? ведь идентификаторы без this и так связаны с замыканиями. Или это баг?

UPD попробовал в ноде - так там они вообще ничем не отличаются от обычных функций.

arrowfunctions1 15.12.2015 12:42

UPD поигрался немного, вроде дошло. Это, похоже просто сахар для конструкторов. В момент инициализациии это говно просто раскрывается в обычную функцию с bind, и связывается с тем объектом, в котором инициализируется. Как то так
Test = function(){
  this.a = 1
  this.fu = () => alert(this.a)
}

test = new Test
test.fu() // 1
fu = test.fu
fu() // 1


Какое уродство однако.

arrowfunctions1 15.12.2015 12:43

Rise,
Ух ты, да ты умный оказывается?


Часовой пояс GMT +3, время: 23:34.