sitelink1 | https://developer.mozilla.org/ja/docs/We..._Accessors |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
개요
멤버 연산자는 객체의 속성 또는 메서드에 대한 액세스를 제공합니다.
객체는 실제로는 연관 배열 (일명 map , dictionary , hash , lookup table )입니다. 이 배열의 키 는 속성 및 메소드 (함수를 참조하는 속성)의 이름입니다. 속성에 액세스하려면 두 가지 방법이 있습니다. 도트 표기법과 브라켓 표기법 (일명 첨자 연산자)입니다.
참고 : ECMAScript 사양은 이러한 연산자를 "member operators"보다는 "property accessors"라고 부르고 있습니다.
도트 표기법
get = object.property; object.property = set;
property
는 유효한 JavaScript 식별자, 즉 숫자로 시작하지 말라 밑줄 ( " _
") 및 달러 기호 (" $
")를 포함한 숫자의 연속이어야합니다. 예를 들어object $ 1
은 유효하지만 object.1
은 그렇지 않습니다.
// 예
document . createElement ( 'pre' ) ;
여기에서는 메소드 이름 "createElement"이 document
에서 검색되고이라고합니다.
브래킷 표기법
get = object [property_name]; object [property_name] = set;
property_name
은 문자열입니다. 이 문자열은 유효한 식별자 일 필요는 없습니다. 예를 들어 "1foo" "! bar!", 또는 ""(공백)이든지 어떠한 값을 가질 수 있습니다.
// 예
document [ 'createElement' ] ( 'pre' ) ;
이것은 앞의 예와 똑같은 것입니다.
속성 이름
속성 이름은 문자열이어야합니다. 이것은 문자열이 아닌 객체가 객체의 키로 사용할 수 없다는 것을 의미합니다. 숫자를 포함하는 모든 문자열이 아닌 객체는 toString
메소드를 통해 문자열 형태 변환됩니다.
// 예제
var Object = { } ;
object [ '1' ] = 'value' ;
alert ( object [ 1 ] ) ;
이것은 1가 '1'로 형태 변환 된 후 "value"를 출력합니다.
var foo = { unique_prop : 1 } , bar = { unique_prop : 2 } , object = { } ;
object [ foo ] = 'value' ;
alert ( object [ bar ] ) ;
이것 또한 foo와 bar가 모두 같은 문자열로 변환 된 후 "value"를 출력합니다. SpiderMonkey JavaScript 엔진은이 문자열은 "[object Object]"이 될 것입니다.
메소드의 속박
메소드는 그 메소드의 객체에 속박되어 있지 않습니다. 특히 this
는 메소드 내에서 고정되지 않습니다. 즉, this
는 반드시 그 메소드를 포함한 객체를 참조 할 필요가 없습니다. this
대신 함수 호출을 통해 "전달됩니다."
" 메소드의 속박 "을 참조하십시오
eval
상의주의
JavaScript 초보자는 종종 대신 브래킷 표기법을 사용할 수있는 곳에서 eval
을 사용하는 실수를합니다. 예를 들어 다음과 같은 구문입니다.
// before
x = eval ( 'document.form_name' + strFormControl + '.value' ) ;
eval
은 저속이기 때문에 가능한 한 피하고 대신 브래킷 표기법을 사용하는 것이 좋습니다.
// After
x = document . form_name [ strFormControl ] . value ;
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
177 | CORS(Cross-Origin Resource Sharing) - 3 | 황제낙엽 | 2017.03.07 | 45 |
176 | CORS(Cross-Origin Resource Sharing) - 2 | 황제낙엽 | 2017.03.07 | 24 |
175 | CORS(Cross-Origin Resource Sharing) - 1 | 황제낙엽 | 2017.03.07 | 135 |
174 | Jasmine 테스트 및 CI 구축 가이드 | 황제낙엽 | 2016.11.16 | 254 |
173 | QUnit을 이용한 JavaScript 단위 테스트 | 황제낙엽 | 2016.11.16 | 36 |
172 | code compressor & decompressor | 황제낙엽 | 2015.01.02 | 181 |
» | 멤버 연산자 | 황제낙엽 | 2014.12.30 | 47 |
170 | 연산자 this | 황제낙엽 | 2014.12.30 | 23 |
169 | typeof 와 instanceof의 차이, 타입 또는 클래스 구분하기 | 황제낙엽 | 2013.10.24 | 38 |
168 | 링크모음 | 황제낙엽 | 2011.03.25 | 25 |
167 | 개요 | 황제낙엽 | 2009.03.11 | 28 |
166 | XMLHttpRequest.setRequestHeader | 황제낙엽 | 2013.09.30 | 62 |
165 | HTTP Content-Type 정리 | 황제낙엽 | 2013.09.30 | 68 |
164 | getBoundingClientRect in FF3 | 황제낙엽 | 2013.01.11 | 36 |
163 | 연속해서 스트림 받기 (flush data from servlet to jsp with ajax) | 황제낙엽 | 2013.01.04 | 2428 |
162 | Stack (스택) 예제 프로그램 | 황제낙엽 | 2012.12.27 | 27 |
161 | 상속과 Super 로의 접근 | 황제낙엽 | 2012.09.18 | 64 |
160 | inherits() 를 이용한 상속 | 황제낙엽 | 2012.07.18 | 129 |
159 | Javascript delete | 황제낙엽 | 2012.06.11 | 20 |
158 | delete 연산자에 대한 고찰 | 황제낙엽 | 2012.06.11 | 42 |