2015-06-13 4 views
0

Рамки JavaScript часто вызывают обратные вызовы с помощью apply().Тип: Lambdas и использование 'this'

Нотация стрелки типаScript, однако, не позволяет мне получить доступ к указателю «this».

Как это делается?

Если это не так, есть ли место, чтобы проголосовать за текущую «эту» обработку на Lambdas?

+0

Совет https://www.youtube.com/watch?v=tvocUcbCupA – basarat

ответ

4

Управление TypeScript this в функции стрелки соответствует ES6 (Считывание: Arrow Functions). Из-за этой спецификации было бы непоследовательно, если бы оно действовало любым другим способом.

Если вы хотите получить доступ к текущей функции this, вы можете использовать обычную функцию.

Например, изменение:

function myScope() { 
    var f =() => console.log(this); // |this| is the instance of myScope 
    f.call({}); 
} 

new myScope(); 

To:

function myScope() { 
    var f = function() { console.log(this); } // |this| is {} 
    f.call({}); 
} 

new myScope(); 
+0

я вижу. Но изменение значения указателя 'this' для лямбда-выражений и тем самым введение расходящегося поведения в зависимости от того, как объявлена ​​функция, не вносит ясности, как я считаю. Вместо этого он добавляет двусмысленность и проблемы. Есть ли ссылка, чтобы обсудить это для ECMA 262-6? – AxD

+0

@AxD Это определенно слишком поздно. ES6 планируется опубликовать в этом месяце ([июнь 2015] (https://twitter.com/awbjs/status/474662357516689410)). –

Смежные вопросы