2016-04-06 2 views
0

классы Es6 this всегда относится к объекту, в котором он был создан, даже внутри внутренней функции, потому что он делает var _this = this, и любая ссылка на this станет _this. Однако что, если мне нужно обратиться к контексту внутренней функции внутри этого класса?JavaScript Es6 ссылается на эту внутреннюю внутреннюю функцию?

class Body { 
    constructor() { 
     Hooks.subscribe('',() => { 
      // I want this to reference the context that is within this method 
      // elsewhere because bind,apply,call sets new context 
     }) 
    } 
} 

Как я могу относиться к контексту Hooks.subscribe внутри класса ES6?

+0

Так что вы хотите 'это 'быть« крючками »? – Neal

+1

Поведение 'this' не изменяется в классах, но изменяется в lambdas. – ssube

+1

Функции стрелочной стрелки (lambdas) связывают область с окружающей областью, поэтому она, вероятно, будет работать, если вы просто используете' function() {} ' , –

ответ

0

Предполагая, что вы хотите сослаться на Крючки-х this:

А также при условии, что функция subscribe возвращает исходный hook объект

Вы можете сделать:

class Body { 
    constructor() { 
     const hook = Hooks.subscribe('',() => { 
      // `this` will still reference `Body`'s objects this 
      // `hook` will reference the hook object 
     }); 
    } 
} 
+0

Что вы подразумеваете под _ "Hooks's this" _ и _ "Объекты тела это" _? 'this' - это не то, что можно отнести к объекту. – zeroflagL

+0

@zeroflagL жаль, плохая формулировка. Контекст – Neal

0

Поскольку вы используете функцию стрелки this хранится в поле зрения от родителя. Чтобы переназначить это в текущую область, удалите функцию стрелки.

class Body { 
    constructor() { 
     Hooks.subscribe('', function() { 
      // `this` is now the context of Hooks.subscribe 
     }); 
    } 
} 
Смежные вопросы