2017-04-30 3 views
0

これは、我々はそのインデックスによって配列を取得することができます方法です。配列インデックスのようなTypeScriptメソッドを呼び出すことは可能ですか?

var theArray=[]; 
theArray['something']=="Hello!"; 
console.log(theArray['something']); //Print "Hello!" 

は今、同じことを想像し、私は機能を持っていると私はそれを呼び出すつもりです。このように:

export class myClass { 
    public callByIndex(theIndex:string) { 
     //this is how it works: 
     this.doSomething() 

     //And these are the ways I need to call them: 
     this.theIndex //of course error! 
     //or 
     this[theIndex]; //Another Error! How to do it? 
    } 

    private doSomething(){ 
     console.log("Yesss, I called!"); 
    } 
} 

let callTest = new myClass(); 
callTest.callByIndex("doSomething"); //Here I give the method name! 

どうすれば可能ですか?

+0

インデックスは何ですか?指定されたインデックスに基づいて値を取得するには、オブジェクト/配列が必要です。 'this.someArray [theIndex]' – Oen44

+0

@ Oen44私はあなたが何を意味しているのか知っているので、私はJavaScriptのオブジェクト/配列について知っているので、私は**のように "配列インデックスと同じように" **、それらのインデックスで配列にアクセスする方法も同様です。 – M98

答えて

2

まず、Javascriptの配列は、intergerプロパティを持つ単なるオブジェクト({ })です。したがって、角括弧を使用して関数を呼び出すには、実行する関数の名前を渡します。

class Test { 
    dummyFunction(arg) { 
    console.log('dummyFunction called with argument: ' + arg); 
    } 
} 

let test = new Test(); 
test['dummyFunction']('this is a string'); 
+0

賢く答えてください!すばらしいです。 'dummyFunction'メソッドの中で同じことはどうやってできますか? 'Test'クラスにもう一つのメソッドがあり、' dummyFunction'の 'arg'引数の仕事が与えられた引数に従ってこれらのメソッドを呼び出すことを想像してみてください。 *(与えられた引数は他のメソッド名です)* – M98

+0

'dummyFunction'の中で、' arg'に名前が格納されている関数が引数を取らないと仮定して 'this [arg]()'を実行するだけです。 – Dummy

+0

@ M98 Javascriptの大括弧は実際にはプロパティへのアクセス構文です。関数は与えられたオブジェクト(または型)の単なるプロパティです。角括弧の構文については、値を評価すると任意の式を渡すことができます既存のプロパティに解決されない、 'undefined'が返されます – Dummy

関連する問題