2017-09-18 11 views
1

まさにこのJavascriptの機能はどのようなものですか、どのように使っていますか?これはどのようなJavascript機能ですか?

position = this[this.options.position](); 

.call()を検索しましたが、この奇妙なJavascriptの使用に関連するものはほとんどありません。

ありがとうございます。

+0

これはcall' 'とは何の関係もありません。この関数呼び出しについて正確に理解できないものは何ですか?これは、呼び出されている関数を生成するプロパティへのアクセスに過ぎません。 – Xufox

+2

'this.options.position'が' 'left''だった場合、' position = this.left(); ' –

答えて

0

これは機能とは関係ありませんが、property accessです。これはbracket notationと呼ばれています。実行時に名前が決定されるプロパティにアクセスすることができます。例えば

、これら二つは等価です:あなたは、あなたがすでにブラケット表記に遭遇してきた、配列で働いている場合は

this.left() // dot notation 

// 

var position = 'left'; 
this[position](); // bracket notation 

var arr = [1,2,3]; 
console.log(arr[0]); 
3

それは機能ではありません、それは関数です。その式はthisで参照されるオブジェクトのthis.options.positionという名前のプロパティを検索し、そのプロパティの値が参照する関数を呼び出します。たとえば、this.options.positionに文字列"one"が含まれている場合は、position = this.one()のようになります。

例:

var obj = { 
 
    options: {}, 
 
    one: function() { 
 
    console.log("This is function one"); 
 
    return 1; 
 
    }, 
 
    two: function() { 
 
    console.log("This is function two"); 
 
    return 2; 
 
    }, 
 
    example: function() { 
 
    var position = this[this.options.position](); 
 
    console.log(position); 
 
    } 
 
} 
 

 
obj.options.position = "one"; 
 
obj.example(); 
 

 
obj.options.position = "two"; 
 
obj.example();

関連する問題