2016-04-06 8 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'の動作はクラス内では変わりませんが、lambdaでは変更されます – 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

「フックズ・ディス・」と「ボディー・オブ・ザ・_」の意味は? 「this」はオブジェクトに起因するものではありません。 – zeroflagL

+0

@zeroflagL申し訳ありませんが悪い言葉遣い。フックコンテキスト – Neal

0

矢印機能を使用しているため、thisは親からスコープ内に保持されます。これを現在のスコープに再割り当てするには、矢印機能を削除します。

class Body { 
    constructor() { 
     Hooks.subscribe('', function() { 
      // `this` is now the context of Hooks.subscribe 
     }); 
    } 
} 
関連する問題