2016-09-19 7 views
0

重要私はES6クラスステートメントを使用しています。クラスステートメントでvar this = thatのようなものが許可されていないため、関数で定義された "クラス"に関する回答は適用されません。私が見た答えはうまくいかない。コールバック以外の変数は表示されません。内部ES6クラスステートメント内でコールバック内のクラスメンバーにアクセス

WebPageReader.Storage = class { 
    constructor(object) { 
    this.Object = object; 
    var self = this; // self is out of scope when constructor completes 
    } 

    // var self = this; // not allowed here 

    Load() { 
    chrome.storage.sync.get('somesetting', 
     function (setting) { 
     console.log(this.Object); // I need to do something with this.Object defined at the class level, but this points to something besides my class. 
     } 
    ); 
    } 
} 
+0

'var = this;'はかなり許容されています。 'Load'関数本体の最初の行に挿入するか、または矢印関数をコールバックハンドラとして使用します。 – zerkms

+0

@zerkms、私はそれを試してみるでしょうが、私はそれが動作するとは思わない/ bの負荷の他の変数は表示されません。ありがとう! – toddmo

+0

矢印機能を使用する@zerkmsは素晴らしい解決策です。あなたは答えとして再投稿するべきです。 'chrome.storage.sync.get( 'somesetting'、setting => console.log(this.Object)); ' –

答えて

関連する問題