Вопрос про стрелочные функции
Я как то прочитал про них, было написано, что у них this лексический. Ну, я собственно подумал, что они анологичны обычным ф-циям с bind. А сейчас попробовал в ФФ, оказывается ни хрена подобного. У них this указвает на замыкание.
;(function(){ var a = 1 window.foo = () => alert(this.a) }()) window.foo() // 1 спрашивается, а зачем там this вообще нужен? ведь идентификаторы без this и так связаны с замыканиями. Или это баг? UPD попробовал в ноде - так там они вообще ничем не отличаются от обычных функций. |
UPD поигрался немного, вроде дошло. Это, похоже просто сахар для конструкторов. В момент инициализациии это говно просто раскрывается в обычную функцию с bind, и связывается с тем объектом, в котором инициализируется. Как то так
Test = function(){ this.a = 1 this.fu = () => alert(this.a) } test = new Test test.fu() // 1 fu = test.fu fu() // 1 Какое уродство однако. |
Rise,
Ух ты, да ты умный оказывается? |
Часовой пояс GMT +3, время: 23:34. |