2017-09-18 3 views
1

정확히 어떤 종류의 Javascript 기능이며, 정확히 어떻게 사용합니까?어떤 종류의 Javascript 기능입니까?

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

.call()을 조회했지만 자바의 이상한 사용과 관련된 내용은 거의 없습니다.

감사합니다.

+0

이 call' '과는 아무 상관이 없습니다. 이 함수 호출에 대해 정확히 이해하지 못합니까? 이것은 호출되는 함수를 생성하는 속성 액세스 일뿐입니다. – Xufox

+2

'this.options.position'이''left''이면'position = this.left();' –

답변

0

이것은 기능과 관련이 없지만 property access입니다. 이것은 bracket notation입니다. 런타임시 이름이 결정되는 속성에 액세스 할 수 있습니다.

예를 들어,이 둘은 동일합니다

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

그것은 작동하지 : 당신이 배열 일 경우

this.left() // dot notation 

// 

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

는, 당신은 이미 대괄호 표기법을 가로 질러왔다 일 경우, 의 전화 번호입니다. 이 표현식은 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();

관련 문제