2017-03-06 16 views
-1

私はES 6で作業していますが、オブジェクトに割り当てられた配列を持っています。さらに下の私のオブジェクトでJavaScript内のオブジェクトの外の関数の中から呼び出される配列にアクセスするには

let myArray = [];

私はそうのようなハンドラに割り当てられた機能を持っています。私は関数を定義するオブジェクトの外側今

myFunction: doSomething

const doSomething = function(arg){}

だから私の問題は、私は、この外側の関数の内部で配列に何かを代入しようとすると、JavaScriptはそのことが何であるかわかりませんということです。

オブジェクト内でこのグローバル配列にアクセスする方法を理解できません。だから、この配列に値を代入するとエラーになる。

class myObject { 
    var myArray = [], 
    myFunction: doSomething, 
} 

const doSomething = function(arg) { 
    let selected = $.map(this.select(), (item) => { 
     this.myArray[this.dataItem(item).Id] = true; 
    }); 
} 
+0

私は最初にletをvarに変更しました – Showcaselfloyd

+0

'let'も' var'も有効な構文ではありません。また、 'myFunction:doSomething'もありません。何かエラーがありますか? 'class'キーワードでオブジェクトリテラル構文を使用しようとしているように見えます。 –

+0

@MikeMcCaughanうわー、全くそれを逃した。私はjsクラスを使用しません。私は自分自身を見せます。 – brian

答えて

2

class myObjectについて示された内容は、有効な構文ではありません。

var myArray = []のような変数をそのようなクラス宣言で宣言することはできません。同様に、myFunction: doSomething,も正しくありません。適切なES6 classの構文here on MDNを参照してください。

オブジェクトのプロパティを初期化する場合は、コンストラクタ内でthis.myArray = []を使用してプロパティを初期化してから、任意のメソッド内でthis.myArrayにアクセスできます。ここにあるいくつかの有効な構文です:私もこの方法myFunctionはそうあなたがそれらを定義しなければならないであろう他の方法dataItem()select()があると仮定していることに気づく

var x = new myObject(); 
x.myFunction(); 

:次に

class myObject { 
    constructor() { 
     this.myArray = []; 
    } 

    myFunction(arg) { 
     let selected = $.map(this.select(), (item) => { 
      this.myArray[this.dataItem(item).Id] = true; 
     }); 
    } 
} 

として、あなたはそれを使用しますこのコードが動作するためのメソッドもあります。

関連する問題