(1) 메소드 및 속성의 동적 선택
실제 작업에서는 특정 조건에 따라 두 메소드 [1] 중 하나를 호출하거나 두 속성 사이에서 읽기 및 쓰기 작업이 수행되는 상황에 자주 직면합니다. [2] 중 하나에. 다음 코드는 이러한 상황을 보여줍니다.
if ( 조건 ) {
myObj.method1(someArg);
} else {
myObj.method2(someArg);
}
JavaScript는 다음과 같은 간단한 구문을 제공합니다. , 대괄호 연산자([])를 사용하여 메서드와 속성을 동적으로 선택합니다. 다음 코드에서 볼 수 있듯이 JavaScript에는 두 개의 동등한 멤버 액세스 구문이 있습니다(이 기능은 동적 언어에서 일반적입니다).
obj[expressionResultingInMembername] == obj.memberName
Integer 첨자를 사용하여 액세스한 경우 요소를 배열에 추가한 경우 동적 멤버 선택을 위해 대괄호 연산자를 사용하기 시작했습니다. 이는 배열 객체 자체에 숫자 첨자로 명명된 속성(길이 속성 포함)이 포함되어 있기 때문입니다. 그러나 JavaScript에서는 도트 연산자(.)를 사용하여 이러한 속성에 직접 액세스하는 것을 허용하지 않으므로 myArray.0은 구문론적으로 불법입니다(안타깝지만 멋진 구문입니다).
대괄호 연산자가 도트 연산자 표기보다 더 강력한 이유는 무엇인가요? 이는 대괄호 안에 멤버 이름을 나타내는 모든 항목을 사용하여 개체의 멤버에 액세스할 수 있기 때문입니다. 여기에는 리터럴, 멤버 이름이 포함된 변수, 이름 조합(대부분의 경우 문자열 연결) 및 삼항 연산자를 사용한 빠른 if/then 선택(condition ? valueIfTrue : valueIfFalse)이 포함됩니다. 이 모든 콘텐츠는 문자열로 처리되며 JavaScript는 이 문자열을 사용하여 해당 멤버를 찾습니다.
JavaScript의 함수는 그 자체가 객체이므로 다른 값처럼 참조될 수 있습니다. 표현식의 결과가 함수인 경우 이름을 사용하여 함수를 직접 호출하는 것처럼 괄호 연산자를 사용하여 직접 호출할 수 있습니다.
메서드에 전달된 매개 변수에 이러한 기술을 많이 사용하면 혼란스러운 괄호로 인해 코드를 읽기 어려울 수 있습니다. 이 경우 일반 if/else를 사용하는 것이 더 합리적입니다. 구조.
(2) JavaScript는 객체 속성과 메서드를 순회합니다.
JavaScript는 for in 문을 사용하여 개체의 속성과 메서드를 순회합니다. for in 문은 JavaScript 객체를 반복합니다. 반복할 때마다 객체의 속성이나 메서드를 얻습니다.
구문:
for (ObjectName의 valueName){
// Code
}
이 중 valueName은 속성이나 메소드의 이름을 저장하는 변수 이름입니다. 반복될 때마다.